Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 9383e745e23602bc45f9c92184feea59 > files > 86

gfs2-utils-0.1.62-28.el5.src.rpm

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;
-			
 		}
 	}
 	/* ------------------------------------------------------------- */