From: Darrick J. Wong Date: Mon, 29 Jul 2024 23:23:19 +0000 (-0700) Subject: xfs_repair: enforce one namespace bit per extended attribute X-Git-Tag: v6.10.0~9^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=fde7ec73d5c4316118bf7e9eabfe5ee71fc7685b;p=xfsprogs-dev.git xfs_repair: enforce one namespace bit per extended attribute Enforce that all extended attributes have at most one namespace bit. Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig --- diff --git a/libxfs/libxfs_api_defs.h b/libxfs/libxfs_api_defs.h index cc670d93a..2d858580a 100644 --- a/libxfs/libxfs_api_defs.h +++ b/libxfs/libxfs_api_defs.h @@ -36,6 +36,7 @@ #define xfs_ascii_ci_hashname libxfs_ascii_ci_hashname +#define xfs_attr_check_namespace libxfs_attr_check_namespace #define xfs_attr_get libxfs_attr_get #define xfs_attr_leaf_newentsize libxfs_attr_leaf_newentsize #define xfs_attr_namecheck libxfs_attr_namecheck diff --git a/repair/attr_repair.c b/repair/attr_repair.c index 0f2f7a284..a756a40db 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -291,6 +291,13 @@ process_shortform_attr( } } + if (!libxfs_attr_check_namespace(currententry->flags)) { + do_warn( + _("multiple namespaces for shortform attribute %d in inode %" PRIu64 "\n"), + i, ino); + junkit = 1; + } + /* namecheck checks for null chars in attr names. */ if (!libxfs_attr_namecheck(currententry->flags, currententry->nameval, @@ -641,6 +648,14 @@ process_leaf_attr_block( break; } + if (!libxfs_attr_check_namespace(entry->flags)) { + do_warn( + _("multiple namespaces for attribute entry %d in attr block %u, inode %" PRIu64 "\n"), + i, da_bno, ino); + clearit = 1; + break; + } + if (entry->flags & XFS_ATTR_INCOMPLETE) { /* we are inconsistent state. get rid of us */ do_warn(