cluster: RHEL57 - gfs2_edit: Fix bitmap editing function
Bob Peterson
rpeterso at fedoraproject.org
Thu Feb 3 15:56:27 UTC 2011
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=dbbb859091a700db2fc4dcd4e4df4a0dfdaa84b1
Commit: dbbb859091a700db2fc4dcd4e4df4a0dfdaa84b1
Parent: f09ef2ba0c4f4e6fb7a28138c36e2c4c38816bf5
Author: Bob Peterson <rpeterso at redhat.com>
AuthorDate: Thu Feb 3 09:52:32 2011 -0600
Committer: Bob Peterson <rpeterso at redhat.com>
CommitterDate: Thu Feb 3 09:52:32 2011 -0600
gfs2_edit: Fix bitmap editing function
The bitmap editing function wasn't reading in the rgrp, so that it
would fail with a NULL pointer dereference.
rhbz#656371
---
gfs2/edit/hexedit.c | 33 +++++++++++++++++++--------------
1 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c
index c4249e1..6604376 100644
--- a/gfs2/edit/hexedit.c
+++ b/gfs2/edit/hexedit.c
@@ -2572,23 +2572,28 @@ static void find_change_block_alloc(int *newval)
if (ablock == sbd.sb_addr)
printf("3 (the superblock is not in the bitmap)\n");
else {
- if (newval) {
- if (gfs2_set_bitmap(&sbd, ablock, *newval))
- printf("-1 (block invalid or part of an rgrp).\n");
- else
- printf("%d\n", *newval);
- } else {
- rgd = gfs2_blk2rgrpd(&sbd, ablock);
- if (rgd) {
- gfs2_rgrp_read(&sbd, rgd);
+ rgd = gfs2_blk2rgrpd(&sbd, ablock);
+ if (rgd) {
+ gfs2_rgrp_read(&sbd, rgd);
+ if (newval) {
+ if (gfs2_set_bitmap(&sbd, ablock, *newval))
+ printf("-1 (block invalid or part of an rgrp).\n");
+ else
+ printf("%d\n", *newval);
+ } else {
type = gfs2_get_bitmap(&sbd, ablock, rgd);
- gfs2_rgrp_relse(rgd);
+ if (type < 0) {
+ printf("-1 (block invalid or part of "
+ "an rgrp).\n");
+ exit(-1);
+ }
printf("%d (%s)\n", type, allocdesc[gfs1][type]);
- } else {
- gfs2_rgrp_free(&sbd.rglist);
- printf("-1 (block invalid or part of an rgrp).\n");
- exit(-1);
}
+ gfs2_rgrp_relse(rgd);
+ } else {
+ gfs2_rgrp_free(&sbd.rglist);
+ printf("-1 (block invalid or part of an rgrp).\n");
+ exit(-1);
}
}
gfs2_rgrp_free(&sbd.rglist);
More information about the cluster-commits
mailing list