xfs: initialize the check_owner object fully

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>
This commit is contained in:
Darrick J. Wong 2022-11-06 17:03:15 -08:00
parent 48ff40458f
commit fcd2a43488

View File

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