xfs: fix perag loop in xchk_bmap_check_rmaps
authorDarrick J. Wong <djwong@kernel.org>
Mon, 7 Nov 2022 01:03:19 +0000 (17:03 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 16 Nov 2022 23:25:04 +0000 (15:25 -0800)
sparse complains that we can return an uninitialized error from this
function and that pag could be uninitialized.  We know that there are no
zero-AG filesystems and hence we had to call xchk_bmap_check_ag_rmaps at
least once, so this is not actually possible, but I'm too worn out from
automated complaints from unsophisticated AIs so let's just fix this and
move on to more interesting problems, eh?

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/scrub/bmap.c

index f0b9cb6..cb203e0 100644 (file)
@@ -599,14 +599,14 @@ xchk_bmap_check_rmaps(
 
        for_each_perag(sc->mp, agno, pag) {
                error = xchk_bmap_check_ag_rmaps(sc, whichfork, pag);
-               if (error)
-                       break;
-               if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT)
-                       break;
+               if (error ||
+                   (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT)) {
+                       xfs_perag_put(pag);
+                       return error;
+               }
        }
-       if (pag)
-               xfs_perag_put(pag);
-       return error;
+
+       return 0;
 }
 
 /*