From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23334 invoked by alias); 4 Aug 2009 22:10:14 -0000 Received: (qmail 23327 invoked by alias); 4 Aug 2009 22:10:13 -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: RHEL5 - 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/RHEL5 X-Git-Reftype: branch X-Git-Oldrev: 527b0880da57f43b3b617e95119c0ad2f7328477 X-Git-Newrev: 8d43d79122b0a220707af527ecef67e1bd21bf26 From: Bob Peterson Message-Id: <20090804220951.CEB531201DE@lists.fedorahosted.org> Date: Tue, 04 Aug 2009 22:10: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/msg00156.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=8d43d79122b0a220707af527ecef67e1bd21bf26 Commit: 8d43d79122b0a220707af527ecef67e1bd21bf26 Parent: 527b0880da57f43b3b617e95119c0ad2f7328477 Author: Bob Peterson AuthorDate: Tue Aug 4 16:52:01 2009 -0500 Committer: Bob Peterson CommitterDate: Tue Aug 4 17:13:14 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 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; - } } /* ------------------------------------------------------------- */