Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=b93... Commit: b9306e19ba3f346326befd933c8ecdd9bc8973bf Parent: 415fc5f19db6780c76dfc00f680a9617dacd7b31 Author: Bob Peterson rpeterso@redhat.com AuthorDate: Tue Feb 22 16:40:37 2011 -0600 Committer: Bob Peterson rpeterso@redhat.com CommitterDate: Tue Feb 22 16:40:37 2011 -0600
fsck.gfs2: segfault in pass1b
The problem occurred when there were duplicate block references in a dinode but all references in the duplicate list are eventually deleted due to other corruption. The fix is an additional check whether the list is empty.
rhbz#679076 --- gfs2/fsck/pass1b.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gfs2/fsck/pass1b.c b/gfs2/fsck/pass1b.c index a0c5c88..9abc8c1 100644 --- a/gfs2/fsck/pass1b.c +++ b/gfs2/fsck/pass1b.c @@ -558,7 +558,7 @@ static int handle_dup_blk(struct gfs2_sbd *sbp, struct duptree *b) last_reference = clear_a_reference(sbp, b, &b->ref_inode_list, &dh, 0);
- if (last_reference) { + if (last_reference && !osi_list_empty(&b->ref_inode_list)) { uint8_t q;
/* If we're down to a single reference (and not all references
cluster-commits@lists.fedorahosted.org