From: Darrick J. Wong Date: Wed, 21 Dec 2016 04:35:47 +0000 (-0600) Subject: xfs_repair: change null check to assertion X-Git-Tag: v4.9.0-rc1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f9cd7f89801246cefb0d4d194b1346898bead59b;p=thirdparty%2Fxfsprogs-dev.git xfs_repair: change null check to assertion It /should/ be the case that we never run out of records before we run out of btree blocks, so change the null check (that was only to appease Coverity) to an assert. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/repair/phase5.c b/repair/phase5.c index cbda55642..ebe1f7d67 100644 --- a/repair/phase5.c +++ b/repair/phase5.c @@ -1579,6 +1579,7 @@ build_rmap_tree( struct xfs_rmap_irec highest_key = {0}; struct xfs_rmap_irec hi_key = {0}; struct bt_stat_level *lptr; + int numrecs; int level = btree_curs->num_levels; int error; @@ -1622,7 +1623,10 @@ _("Insufficient memory to construct reverse-map cursor.")); rm_rec = pop_slab_cursor(rmap_cur); lptr = &btree_curs->level[0]; - for (i = 0; i < lptr->num_blocks && rm_rec != NULL; i++) { + for (i = 0; i < lptr->num_blocks; i++) { + numrecs = lptr->num_recs_pb + (lptr->modulo > 0); + ASSERT(rm_rec != NULL || numrecs == 0); + /* * block initialization, lay in block header */ @@ -1634,8 +1638,7 @@ _("Insufficient memory to construct reverse-map cursor.")); XFS_BTREE_CRC_BLOCKS); bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno); - bt_hdr->bb_numrecs = cpu_to_be16(lptr->num_recs_pb + - (lptr->modulo > 0)); + bt_hdr->bb_numrecs = cpu_to_be16(numrecs); if (lptr->modulo > 0) lptr->modulo--; @@ -1883,6 +1886,7 @@ build_refcount_tree( struct xfs_slab_cursor *refc_cur; struct xfs_refcount_rec *bt_rec; struct bt_stat_level *lptr; + int numrecs; int level = btree_curs->num_levels; int error; @@ -1925,7 +1929,10 @@ _("Insufficient memory to construct refcount cursor.")); refc_rec = pop_slab_cursor(refc_cur); lptr = &btree_curs->level[0]; - for (i = 0; i < lptr->num_blocks && refc_rec != NULL; i++) { + for (i = 0; i < lptr->num_blocks; i++) { + numrecs = lptr->num_recs_pb + (lptr->modulo > 0); + ASSERT(refc_rec != NULL || numrecs == 0); + /* * block initialization, lay in block header */ @@ -1937,8 +1944,7 @@ _("Insufficient memory to construct refcount cursor.")); XFS_BTREE_CRC_BLOCKS); bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno); - bt_hdr->bb_numrecs = cpu_to_be16(lptr->num_recs_pb + - (lptr->modulo > 0)); + bt_hdr->bb_numrecs = cpu_to_be16(numrecs); if (lptr->modulo > 0) lptr->modulo--;