public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Miklos Szeredi <mszeredi@redhat.com>,
	Alois Wohlschlager <alois1@gmx-topmail.de>,
	Sasha Levin <sashal@kernel.org>,
	miklos@szeredi.hu, linux-unionfs@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 17/28] ovl: warn if trusted xattr creation fails
Date: Sun, 14 Aug 2022 12:25:57 -0400	[thread overview]
Message-ID: <20220814162610.2397644-17-sashal@kernel.org> (raw)
In-Reply-To: <20220814162610.2397644-1-sashal@kernel.org>

From: Miklos Szeredi <mszeredi@redhat.com>

[ Upstream commit b10b85fe5149ee8b39fbbf86095b303632dde2cd ]

When mounting overlayfs in an unprivileged user namespace, trusted xattr
creation will fail.  This will lead to failures in some file operations,
e.g. in the following situation:

  mkdir lower upper work merged
  mkdir lower/directory
  mount -toverlay -olowerdir=lower,upperdir=upper,workdir=work none merged
  rmdir merged/directory
  mkdir merged/directory

The last mkdir will fail:

  mkdir: cannot create directory 'merged/directory': Input/output error

The cause for these failures is currently extremely non-obvious and hard to
debug.  Hence, warn the user and suggest using the userxattr mount option,
if it is not already supplied and xattr creation fails during the
self-check.

Reported-by: Alois Wohlschlager <alois1@gmx-topmail.de>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/overlayfs/super.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 7bb0a47cb615..9837aaf9caf1 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -1413,11 +1413,12 @@ static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
 	 */
 	err = ovl_do_setxattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE, "0", 1);
 	if (err) {
+		pr_warn("failed to set xattr on upper\n");
 		ofs->noxattr = true;
 		if (ofs->config.index || ofs->config.metacopy) {
 			ofs->config.index = false;
 			ofs->config.metacopy = false;
-			pr_warn("upper fs does not support xattr, falling back to index=off,metacopy=off.\n");
+			pr_warn("...falling back to index=off,metacopy=off.\n");
 		}
 		/*
 		 * xattr support is required for persistent st_ino.
@@ -1425,8 +1426,10 @@ static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
 		 */
 		if (ofs->config.xino == OVL_XINO_AUTO) {
 			ofs->config.xino = OVL_XINO_OFF;
-			pr_warn("upper fs does not support xattr, falling back to xino=off.\n");
+			pr_warn("...falling back to xino=off.\n");
 		}
+		if (err == -EPERM && !ofs->config.userxattr)
+			pr_info("try mounting with 'userxattr' option\n");
 		err = 0;
 	} else {
 		ovl_do_removexattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE);
-- 
2.35.1


  parent reply	other threads:[~2022-08-14 16:34 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-14 16:25 [PATCH AUTOSEL 5.15 01/28] lib/list_debug.c: Detect uninitialized lists Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 02/28] tty: serial: Fix refcount leak bug in ucc_uart.c Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 03/28] KVM: PPC: Book3S HV: Fix "rm_exit" entry in debugfs timings Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 04/28] vfio: Clear the caps->buf to NULL after free Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 05/28] mips: cavium-octeon: Fix missing of_node_put() in octeon2_usb_clocks_start Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 06/28] iommu/io-pgtable-arm-v7s: Add a quirk to allow pgtable PA up to 35bit Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 07/28] modules: Ensure natural alignment for .altinstructions and __bug_table sections Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 08/28] ASoC: rsnd: care default case on rsnd_ssiu_busif_err_irq_ctrl() Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 09/28] riscv: dts: sifive: Add fu540 topology information Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 10/28] riscv: dts: sifive: Add fu740 " Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 11/28] riscv: dts: canaan: Add k210 " Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 12/28] riscv: mmap with PROT_WRITE but no PROT_READ is invalid Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 13/28] RISC-V: Add fast call path of crash_kexec() Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 14/28] watchdog: export lockup_detector_reconfigure Sasha Levin
2022-08-23  9:34   ` Laurent Dufour
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 15/28] powerpc/32: Set an IBAT covering up to _einittext during init Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 16/28] powerpc/32: Don't always pass -mcpu=powerpc to the compiler Sasha Levin
2022-08-14 16:25 ` Sasha Levin [this message]
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 18/28] powerpc/ioda/iommu/debugfs: Generate unique debugfs entries Sasha Levin
2022-08-14 16:25 ` [PATCH AUTOSEL 5.15 19/28] ALSA: core: Add async signal helpers Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 20/28] ALSA: timer: Use deferred fasync helper Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 21/28] ALSA: control: " Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 22/28] f2fs: fix to avoid use f2fs_bug_on() in f2fs_new_node_page() Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 23/28] f2fs: fix to do sanity check on segment type in build_sit_entries() Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 24/28] smb3: check xattr value length earlier Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 25/28] powerpc/64: Init jump labels before parse_early_param() Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 26/28] venus: pm_helpers: Fix warning in OPP during probe Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 27/28] video: fbdev: i740fb: Check the argument of i740_calc_vclk() Sasha Levin
2022-08-14 16:26 ` [PATCH AUTOSEL 5.15 28/28] MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0 Sasha Levin

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=20220814162610.2397644-17-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=alois1@gmx-topmail.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-unionfs@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=mszeredi@redhat.com \
    --cc=stable@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