xfs: fix btree scrub deref check
authorDarrick J. Wong <darrick.wong@oracle.com>
Mon, 6 Nov 2017 20:09:29 +0000 (12:09 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 9 Nov 2017 17:10:45 +0000 (09:10 -0800)
The btree scrubber has some custom code to retrieve and check a btree
block via xfs_btree_lookup_get_block.  This function will either return
an error code (verifiers failed) or a *pblock will be untouched (bad
pointer).  Since we previously set *pblock to NULL, we need to check
*pblock, not pblock, to trigger the early bailout.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/scrub/btree.c

index a81440496e7bfedb2ff060c09dfa2f0aabe5ea57..df0766132acea690e0d883e87a02365539810168 100644 (file)
@@ -335,7 +335,7 @@ xfs_scrub_btree_get_block(
 
        error = xfs_btree_lookup_get_block(bs->cur, level, pp, pblock);
        if (!xfs_scrub_btree_process_error(bs->sc, bs->cur, level, &error) ||
-           !pblock)
+           !*pblock)
                return error;
 
        xfs_btree_get_block(bs->cur, level, pbp);