From: Darrick J. Wong <djwong@xxxxxxxxxx> Remove any fs-verity extended attributes when the filesystem doesn't support fs-verity. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- repair/attr_repair.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/repair/attr_repair.c b/repair/attr_repair.c index 9c41cb21..5225950c 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -313,6 +313,13 @@ process_shortform_attr( NULL, currententry->namelen, currententry->valuelen); + if ((currententry->flags & XFS_ATTR_VERITY) && + !xfs_has_verity(mp)) { + do_warn( + _("verity metadata found on filesystem that doesn't support verity\n")); + junkit |= 1; + } + remainingspace = remainingspace - xfs_attr_sf_entsize(currententry); @@ -513,6 +520,15 @@ process_leaf_attr_local( return -1; } } + + if ((entry->flags & XFS_ATTR_VERITY) && !xfs_has_verity(mp)) { + do_warn( + _("verity metadata found in attribute entry %d in attr block %u, inode %" + PRIu64 " on filesystem that doesn't support verity\n"), + i, da_bno, ino); + return -1; + } + return xfs_attr_leaf_entsize_local(local->namelen, be16_to_cpu(local->valuelen)); } @@ -549,6 +565,14 @@ process_leaf_attr_remote( return -1; } + if ((entry->flags & XFS_ATTR_VERITY) && !xfs_has_verity(mp)) { + do_warn( + _("verity metadata found in attribute entry %d in attr block %u, inode %" + PRIu64 " on filesystem that doesn't support verity\n"), + i, da_bno, ino); + return -1; + } + value = malloc(be32_to_cpu(remotep->valuelen)); if (value == NULL) { do_warn(