From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21820 invoked by alias); 4 Aug 2009 22:07:46 -0000 Received: (qmail 21814 invoked by alias); 4 Aug 2009 22:07:46 -0000 X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_66,SPF_HELO_PASS X-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_66,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: STABLE3 - GFS2: gfs2_fsck segfault in rindex repair code To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/STABLE3 X-Git-Reftype: branch X-Git-Oldrev: 4011cf6737f4155f8e4f277c10ce4fb568024a9c X-Git-Newrev: 212f926220e45c0366ba23dc4bb9e5306fcc21ad From: Bob Peterson Message-Id: <20090804220724.DDC941201DE@lists.fedorahosted.org> Date: Tue, 04 Aug 2009 22:07:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q3/txt/msg00154.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=212f926220e45c0366ba23dc4bb9e5306fcc21ad Commit: 212f926220e45c0366ba23dc4bb9e5306fcc21ad Parent: 4011cf6737f4155f8e4f277c10ce4fb568024a9c Author: Bob Peterson AuthorDate: Tue Aug 4 17:00:16 2009 -0500 Committer: Bob Peterson CommitterDate: Tue Aug 4 17:00:16 2009 -0500 GFS2: gfs2_fsck segfault in rindex repair code bz 514018 --- gfs2/fsck/rgrepair.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gfs2/fsck/rgrepair.c b/gfs2/fsck/rgrepair.c index ca16ba5..d0b8f33 100644 --- a/gfs2/fsck/rgrepair.c +++ b/gfs2/fsck/rgrepair.c @@ -369,6 +369,11 @@ static 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; } @@ -539,12 +544,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; - } } /* ------------------------------------------------------------- */