commit 6c1c66f8bb8a12971fa48465de9f677b5f69d5b4 Author: Bob Peterson <rpeterso@redhat.com> Date: Tue Aug 4 16:52:01 2009 -0500 GFS2: gfs2_fsck segfault in rindex repair code This patch fixes a problem that caused the fsck.gfs2 program to segfault while trying to repair a damaged resource group index file. rhbz#514018 diff --git a/gfs2/fsck/rgrepair.c b/gfs2/fsck/rgrepair.c index 003e9ff..e11b72b 100644 --- a/gfs2/fsck/rgrepair.c +++ b/gfs2/fsck/rgrepair.c @@ -369,6 +369,11 @@ int gfs2_rindex_calculate(struct gfs2_sbd *sdp, osi_list_t *ret_list, /* ----------------------------------------------------------------- */ *num_rgs = sdp->md.riinode->i_di.di_size / sizeof(struct gfs2_rindex); log_warn("L2: number of rgs in the index = %d.\n", *num_rgs); + /* Move the rg list to the return list */ + ret_list->next = sdp->rglist.next; + ret_list->prev = sdp->rglist.prev; + ret_list->next->prev = ret_list; + ret_list->prev->next = ret_list; return 0; } @@ -540,12 +545,11 @@ int rg_repair(struct gfs2_sbd *sdp, int trust_lvl, int *rg_count) free(actual->bh); if (actual->bits) free(actual->bits); - gfs2_compute_bitstructs(sdp, actual); } else log_err("RG index not fixed.\n"); + gfs2_compute_bitstructs(sdp, actual); rindex_modified = FALSE; - } } /* ------------------------------------------------------------- */