xfs: initialize the check_owner object fully
authorDarrick J. Wong <djwong@kernel.org>
Mon, 7 Nov 2022 01:03:15 +0000 (17:03 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 16 Nov 2022 23:25:02 +0000 (15:25 -0800)
Initialize the check_owner list head so that we don't corrupt the list.
Reduce the scope of the object pointer.

Fixes: 858333dcf021 ("xfs: check btree block ownership with bnobt/rmapbt when scrubbing btree")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/scrub/btree.c

index 2f45195..075ff30 100644 (file)
@@ -408,7 +408,6 @@ xchk_btree_check_owner(
        struct xfs_buf          *bp)
 {
        struct xfs_btree_cur    *cur = bs->cur;
-       struct check_owner      *co;
 
        /*
         * In theory, xfs_btree_get_block should only give us a null buffer
@@ -431,10 +430,14 @@ xchk_btree_check_owner(
         * later scanning.
         */
        if (cur->bc_btnum == XFS_BTNUM_BNO || cur->bc_btnum == XFS_BTNUM_RMAP) {
+               struct check_owner      *co;
+
                co = kmem_alloc(sizeof(struct check_owner),
                                KM_MAYFAIL);
                if (!co)
                        return -ENOMEM;
+
+               INIT_LIST_HEAD(&co->list);
                co->level = level;
                co->daddr = xfs_buf_daddr(bp);
                list_add_tail(&co->list, &bs->to_check);