linux/fs/overlayfs
Miklos Szeredi e91308e637 ovl: fail on invalid uid/gid mapping at copy up
commit 4f11ada10d upstream.

If st_uid/st_gid doesn't have a mapping in the mounter's user_ns, then
copy-up should fail, just like it would fail if the mounter task was doing
the copy using "cp -a".

There's a corner case where the "cp -a" would succeed but copy up fail: if
there's a mapping of the invalid uid/gid (65534 by default) in the user
namespace.  This is because stat(2) will return this value if the mapping
doesn't exist in the current user_ns and "cp -a" will in turn be able to
create a file with this uid/gid.

This behavior would be inconsistent with POSIX ACL's, which return -1 for
invalid uid/gid which result in a failed copy.

For consistency and simplicity fail the copy of the st_uid/st_gid are
invalid.

Fixes: 459c7c565a ("ovl: unprivieged mounts")
Cc: <stable@vger.kernel.org> # v5.11
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Reviewed-by: Seth Forshee <sforshee@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-02-01 08:27:24 +01:00
..
copy_up.c ovl: fail on invalid uid/gid mapping at copy up 2023-02-01 08:27:24 +01:00
dir.c ovl: Use ovl mounter's fsuid and fsgid in ovl_link() 2023-01-12 11:58:46 +01:00
export.c ovl: drop WARN_ON() dentry is NULL in ovl_encode_fh() 2022-08-17 14:22:51 +02:00
file.c ovl: remove privs in ovl_fallocate() 2022-12-31 13:14:00 +01:00
inode.c ovl: use ovl_copy_{real,upper}attr() wrappers 2022-12-31 13:14:00 +01:00
Kconfig docs: fix broken references to text files 2020-04-20 15:35:59 -06:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
namei.c ovl: relax lookup error on mismatch origin ftype 2021-08-17 11:47:44 +02:00
overlayfs.h ovl: use ovl_copy_{real,upper}attr() wrappers 2022-12-31 13:14:00 +01:00
ovl_entry.h ovl: store lower path in ovl_inode 2022-12-31 13:14:00 +01:00
readdir.c ovl: skip stale entries in merge dir cache iteration 2021-08-10 10:21:30 +02:00
super.c ovl: fix use inode directly in rcu-walk mode 2022-12-31 13:14:47 +01:00
util.c ovl: use ovl_copy_{real,upper}attr() wrappers 2022-12-31 13:14:00 +01:00