From 930af869ece0800f0bac550dbcac4fa24d97bae4 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Wed, 23 May 2018 16:30:47 -0500 Subject: [PATCH] xfs_repair: examine all remote attribute blocks Examine all remote xattr values of a file, not just the XFS_ATTR_ROOT values. This enables us to detect and zap corrupt user xattrs, as tested by xfs/404. Signed-off-by: Darrick J. Wong Reviewed-by: Allison Henderson Signed-off-by: Eric Sandeen --- repair/attr_repair.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/repair/attr_repair.c b/repair/attr_repair.c index 8b1b8a752..67bb41ec1 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -537,9 +537,6 @@ process_leaf_attr_remote( return -1; } - if (!(entry->flags & XFS_ATTR_ROOT)) - goto out; - value = malloc(be32_to_cpu(remotep->valuelen)); if (value == NULL) { do_warn( @@ -555,7 +552,8 @@ process_leaf_attr_remote( i, ino); goto bad_free_out; } - if (valuecheck(mp, (char *)&remotep->name[0], value, remotep->namelen, + if ((entry->flags & XFS_ATTR_ROOT) && + valuecheck(mp, (char *)&remotep->name[0], value, remotep->namelen, be32_to_cpu(remotep->valuelen))) { do_warn( _("remote attribute value check failed for entry %d, inode %" PRIu64 "\n"), -- 2.47.2