Commit f654683d authored by Andreas Gruenbacher's avatar Andreas Gruenbacher Committed by Bob Peterson

gfs2: Always check the result of gfs2_rbm_from_block

When gfs2_rbm_from_block fails, the rbm it returns is undefined, so we
always want to make sure gfs2_rbm_from_block has succeeded before
looking at the rbm.
Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
Reviewed-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
parent 6ddc5c3d
...@@ -2233,7 +2233,8 @@ static struct gfs2_rgrpd *rgblk_free(struct gfs2_sbd *sdp, u64 bstart, ...@@ -2233,7 +2233,8 @@ static struct gfs2_rgrpd *rgblk_free(struct gfs2_sbd *sdp, u64 bstart,
return NULL; return NULL;
} }
gfs2_rbm_from_block(&rbm, bstart); if (WARN_ON_ONCE(gfs2_rbm_from_block(&rbm, bstart)))
return NULL;
while (blen--) { while (blen--) {
bi = rbm_bi(&rbm); bi = rbm_bi(&rbm);
if (bi != bi_prev) { if (bi != bi_prev) {
...@@ -2366,7 +2367,10 @@ static void gfs2_set_alloc_start(struct gfs2_rbm *rbm, ...@@ -2366,7 +2367,10 @@ static void gfs2_set_alloc_start(struct gfs2_rbm *rbm,
else else
goal = rbm->rgd->rd_last_alloc + rbm->rgd->rd_data0; goal = rbm->rgd->rd_last_alloc + rbm->rgd->rd_data0;
gfs2_rbm_from_block(rbm, goal); if (WARN_ON_ONCE(gfs2_rbm_from_block(rbm, goal))) {
rbm->bii = 0;
rbm->offset = 0;
}
} }
/** /**
...@@ -2575,7 +2579,8 @@ int gfs2_check_blk_type(struct gfs2_sbd *sdp, u64 no_addr, unsigned int type) ...@@ -2575,7 +2579,8 @@ int gfs2_check_blk_type(struct gfs2_sbd *sdp, u64 no_addr, unsigned int type)
rbm.rgd = rgd; rbm.rgd = rgd;
error = gfs2_rbm_from_block(&rbm, no_addr); error = gfs2_rbm_from_block(&rbm, no_addr);
WARN_ON_ONCE(error != 0); if (WARN_ON_ONCE(error))
goto fail;
if (gfs2_testbit(&rbm, false) != type) if (gfs2_testbit(&rbm, false) != type)
error = -ESTALE; error = -ESTALE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment