From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from aserp2120.oracle.com ([141.146.126.78]:40236 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753520AbeEWDP1 (ORCPT ); Tue, 22 May 2018 23:15:27 -0400 Date: Tue, 22 May 2018 20:15:13 -0700 From: "Darrick J. Wong" Subject: [PATCH v2 01/11] xfs_repair: examine all remote attribute blocks Message-ID: <20180523031513.GG14384@magnolia> References: <152401958920.13319.10756339531174871801.stgit@magnolia> <152401959780.13319.9582448473529615015.stgit@magnolia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <152401959780.13319.9582448473529615015.stgit@magnolia> Sender: linux-xfs-owner@vger.kernel.org List-ID: List-Id: xfs To: sandeen@redhat.com Cc: linux-xfs@vger.kernel.org From: Darrick J. Wong 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 --- 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 8b1b8a75..67bb41ec 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"),