From: Zorro Lang <zlang@kernel.org>
To: Avinesh Kumar <avinesh.kumar@suse.com>
Cc: djwong@kernel.org, fstests@vger.kernel.org
Subject: Re: [PATCH v2] common: strip attr 2.6.0 --restore safety warnings
Date: Sat, 18 Jul 2026 01:17:18 +0800 [thread overview]
Message-ID: <alpihbK3XQn3I5vR@zlang-mailbox> (raw)
In-Reply-To: <20260713135256.340261-1-avinesh.kumar@suse.com>
On Mon, Jul 13, 2026 at 03:52:56PM +0200, Avinesh Kumar wrote:
> From: Avinesh Kumar <avinesh.kumar@suse.com>
>
> attr 2.6.0 (CVE-2026-54371 hardening) makes "setfattr --restore" print a
> warning to stderr when neither -P nor -h is given, claiming it may
> traverse or dereference symlinks in the dump's pathnames [0]. This warning
> leaks into test output and breaks generic/062 and xfs/083 (via
> _scratch_populate).
>
> Add a _setfattr_restore helper that runs "setfattr --restore", filters
> out just the expected warning line, and preserves any other (unexpected)
> stderr. Convert the callers in common/populate, common/overlay and
> generic/062 to use it.
>
> [0] https://cgit.git.savannah.nongnu.org/cgit/attr.git/commit/?id=3fb06b9ba314d37035d0877e6de313de754f1ac8
>
> Suggested-by: Darrick J. Wong <djwong@kernel.org>
> Signed-off-by: Avinesh Kumar <avinesh.kumar@suse.com>
> ---
> common/overlay | 2 +-
> common/populate | 4 ++--
> common/rc | 8 ++++++++
> tests/generic/062 | 2 +-
> 4 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/common/overlay b/common/overlay
> index d32f3219..73841dd7 100644
> --- a/common/overlay
> +++ b/common/overlay
> @@ -494,7 +494,7 @@ _overlay_trusted_to_user()
> local dir=$1
>
> for file in `find $dir`; do
> - _getfattr --absolute-names -d -m '^trusted.overlay.(redirect|metacopy)$' $file | sed 's/^trusted/user/' | $SETFATTR_PROG --restore=-
> + _getfattr --absolute-names -d -m '^trusted.overlay.(redirect|metacopy)$' $file | sed 's/^trusted/user/' | _setfattr_restore --restore=-
> for xattr in `_getfattr --absolute-names -d -m '^trusted.overlay.' $file | tail -n +2 | cut -d= -f1`; do
> $SETFATTR_PROG -x $xattr $file;
> done
> diff --git a/common/populate b/common/populate
> index 1c0dd03e..f7fcd0c3 100644
> --- a/common/populate
> +++ b/common/populate
> @@ -151,7 +151,7 @@ __populate_create_attr() {
> echo "# file: ${name}";
> seq --format "user.%08g=\"abcdefgh\"" 0 "${nr}"
> echo
> - ) | setfattr --restore -
> + ) | _setfattr_restore --restore=-
>
> test -z "${missing}" && return
> seq 1 2 "${nr}" | while read d; do
> @@ -200,7 +200,7 @@ __populate_xfs_create_btree_attr() {
> seq --format "user.%08g=\"abcdefgh\"" "${nr}" "$((nr + incr + 1))"
> echo "user.v$(printf "%.08d" "$nr")=\"${bigval}\""
> echo
> - ) | setfattr --restore -
> + ) | _setfattr_restore --restore=-
> done
>
> # ... and in the second loop we delete all the remote attrs to
> diff --git a/common/rc b/common/rc
> index 79189e7e..6234a580 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -132,6 +132,14 @@ _test_fsxattr_xflag()
> grep -q "fsxattr.xflags.*\[.*$2.*\]" <($XFS_IO_PROG -c "stat -v" "$1")
> }
>
> +_setfattr_restore()
> +{
> + $SETFATTR_PROG "$@" 2> $tmp.setfattr.$$
If the function name is _setfattr_restore (not _setfattr), I think it should run
`$SETFATTR_PROG --restore`, rather than a common $SETFATTR_PROG command.
Thanks,
Zorro
> + local ret=$?
> + cat $tmp.setfattr.$$ | sed -e '/--restore=.*unsafe.*without/d' 1>&2
> + return $ret
> +}
> +
> # This test requires extsize support on the filesystem
> _require_scratch_extsize()
> {
> diff --git a/tests/generic/062 b/tests/generic/062
> index 89659040..3ef96da1 100755
> --- a/tests/generic/062
> +++ b/tests/generic/062
> @@ -186,7 +186,7 @@ _create_test_bed
> _extend_test_bed
>
> echo "*** restore everything"
> -setfattr -h --restore=$tmp.backup1
> +_setfattr_restore -h --restore=$tmp.backup1 2>&1 | _filter_scratch
> _backup $tmp.backup2
>
> echo "AFTER RESTORE" >>$seqres.full
> --
> 2.54.0
>
next prev parent reply other threads:[~2026-07-17 17:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-10 19:53 [PATCH] xfs/083: redirect populate stderr to avoid spurious attr restore warnings Avinesh Kumar
2026-07-10 23:46 ` Darrick J. Wong
2026-07-13 13:52 ` [PATCH v2] common: strip attr 2.6.0 --restore safety warnings Avinesh Kumar
2026-07-13 16:14 ` Darrick J. Wong
2026-07-13 19:21 ` Avinesh Kumar
2026-07-17 17:17 ` Zorro Lang [this message]
2026-07-21 10:20 ` [PATCH v3] " Avinesh Kumar
2026-07-21 15:00 ` Darrick J. Wong
2026-07-21 21:26 ` Zorro Lang
2026-07-22 9:20 ` [PATCH v4] " Avinesh Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpihbK3XQn3I5vR@zlang-mailbox \
--to=zlang@kernel.org \
--cc=avinesh.kumar@suse.com \
--cc=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox