From: Christian Brauner Date: Tue, 16 Jun 2026 11:45:28 +0000 (+0200) Subject: Merge patch series "fs: refuse O_TMPFILE creation with an unmapped fsuid or fsgid" X-Git-Tag: v7.2-rc2~14^2~19 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=6193f6cd2232581f11591a4f10a4c3fcd366c34a;p=thirdparty%2Flinux.git Merge patch series "fs: refuse O_TMPFILE creation with an unmapped fsuid or fsgid" Christian Brauner says: vfs_tmpfile() is the only object-creation path in the VFS that never checked whether the caller's fsuid and fsgid map into the filesystem. On an idmapped mount whose idmapping does not cover the caller's fs{u,g}id, the ->tmpfile() instance initializes the new inode through inode_init_owner(), where mapped_fsuid()/mapped_fsgid() return INVALID_UID/INVALID_GID. The tmpfile ends up owned by (uid_t)-1, and because it is created I_LINKABLE it can subsequently be spliced into the namespace with linkat(2). Every other creation path already refuses this: may_o_create() (O_CREAT) and may_create_dentry() (mkdir, mknod, symlink, link) bail out with -EOVERFLOW via fsuidgid_has_mapping() precisely so that an object cannot be created with an owner the filesystem cannot represent. O_TMPFILE is no exception and must hold the same guarantee. Patch 1 adds the missing fsuidgid_has_mapping() check to vfs_tmpfile(). It is a no-op on non-idmapped mounts -- there the caller's fs{u,g}id always map in the superblock's user namespace -- and only takes effect on an idmapped mount that does not map the caller. It applies to every filesystem that sets FS_ALLOW_IDMAP and implements ->tmpfile() (tmpfs, ext4, btrfs, xfs, f2fs, ...), and to overlayfs, whose upper-layer tmpfile creation funnels through vfs_tmpfile() via backing_tmpfile_open(). Patch 2 adds a selftest that idmaps a detached tmpfs mount and checks both directions: an unmapped caller is refused with -EOVERFLOW, while a mapped caller can create an O_TMPFILE, link it into the namespace, and have its ownership round-trip through the mount idmap. * patches from https://patch.msgid.link/20260615-work-idmapped-tmpfile-v1-0-754a94d81f83@kernel.org: selftests/filesystems: test O_TMPFILE creation on idmapped mounts fs: refuse O_TMPFILE creation with an unmapped fsuid or fsgid Link: https://patch.msgid.link/20260615-work-idmapped-tmpfile-v1-0-754a94d81f83@kernel.org Signed-off-by: Christian Brauner (Amutable) --- 6193f6cd2232581f11591a4f10a4c3fcd366c34a