linux/fs/fuse
Jann Horn 0618021e34 fuse: Remove user_ns check for FUSE_DEV_IOC_CLONE
Commit 8ed1f0e22f ("fs/fuse: fix ioctl type confusion") fixed a type
confusion bug by adding an ->f_op comparison.

Based on some off-list discussion back then, another check was added to
compare the f_cred->user_ns.  This is not for security reasons, but was
based on the idea that a FUSE device FD should be using the UID/GID
mappings of its f_cred->user_ns, and those translations are done using
fc->user_ns, which matches the f_cred->user_ns of the initial FUSE device
FD thanks to the check in fuse_fill_super().  See also commit 8cb08329b0
("fuse: Support fuse filesystems outside of init_user_ns").

But FUSE_DEV_IOC_CLONE is, at a higher level, a *cloning* operation that
copies an existing context (with a weird API that involves first opening
/dev/fuse, then tying the resulting new FUSE device FD to an existing FUSE
instance).  So if an application is already passing FUSE FDs across userns
boundaries and dealing with the resulting ID mapping complications somehow,
it doesn't make much sense to block this cloning operation.

I've heard that this check is an obstacle for some folks, and I don't see a
good reason to keep it, so remove it.

Signed-off-by: Jann Horn <jannh@google.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2022-11-23 09:10:49 +01:00
..
acl.c vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
control.c fuse: Remove the control interface for virtio-fs 2022-07-21 16:06:19 +02:00
cuse.c cuse: simplify refcount 2021-04-14 10:40:58 +02:00
dax.c fuse: avoid unnecessary spinlock bump 2022-07-21 16:02:45 +02:00
dev.c fuse: Remove user_ns check for FUSE_DEV_IOC_CLONE 2022-11-23 09:10:49 +01:00
dir.c fuse: always revalidate rename target dentry 2022-11-23 09:10:49 +01:00
file.c fuse: lock inode unconditionally in fuse_fallocate() 2022-11-23 09:10:42 +01:00
fuse_i.h fuse: add "expire only" mode to FUSE_NOTIFY_INVAL_ENTRY 2022-11-23 09:10:49 +01:00
inode.c fuse: retire block-device-based superblock on force unmount 2022-07-27 11:30:31 +02:00
ioctl.c fuse: ioctl: translate ENOSYS 2022-07-21 16:06:18 +02:00
Kconfig dax: remove CONFIG_DAX_DRIVER 2021-12-04 08:58:51 -08:00
Makefile fuse: move ioctl to separate source file 2021-04-12 15:04:30 +02:00
readdir.c fs/fuse: Replace kmap() with kmap_local_page() 2022-11-23 09:10:49 +01:00
virtio_fs.c virtio_fs: Modify format for virtio_fs_direct_access 2022-07-26 10:38:58 +02:00
xattr.c fuse: move fuse_invalidate_attr() into fuse_update_ctime() 2021-10-22 17:03:01 +02:00