xfs: fix missing check for invalid attr flags
authorDarrick J. Wong <djwong@kernel.org>
Mon, 22 Apr 2024 16:47:27 +0000 (09:47 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 23 Apr 2024 14:46:53 +0000 (07:46 -0700)
commitf660ec8eaeb50d0317c29601aacabdb15e5f2203
treeb6bbde3dac8770a95c889e256ce51069a7953222
parentad206ae50eca62836c5460ab5bbf2a6c59a268e7
xfs: fix missing check for invalid attr flags

The xattr scrubber doesn't check for undefined flags in shortform attr
entries.  Therefore, define a mask XFS_ATTR_ONDISK_MASK that has all
possible XFS_ATTR_* flags in it, and use that to check for unknown bits
in xchk_xattr_actor.

Refactor the check in the dabtree scanner function to use the new mask
as well.  The redundant checks need to be in place because the dabtree
check examines the hash mappings and therefore needs to decode the attr
leaf entries to compute the namehash.  This happens before the walk of
the xattr entries themselves.

Fixes: ae0506eba78fd ("xfs: check used space of shortform xattr structures")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/libxfs/xfs_da_format.h
fs/xfs/scrub/attr.c