From: Darrick J. Wong Date: Wed, 23 May 2018 21:30:47 +0000 (-0500) Subject: xfs_repair: examine all remote attribute blocks X-Git-Tag: v4.17.0-rc1~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=930af869ece0800f0bac550dbcac4fa24d97bae4;p=thirdparty%2Fxfsprogs-dev.git 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 --- 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"),