mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 03:27:03 +02:00
Merge patch series "libfs: set SB_I_NOEXEC and SB_I_NODEV in init_pseudo()"
John Hubbard <jhubbard@nvidia.com> says:
This began as a one-line dma-buf fix for a path_noexec() warning added
by commit 1e7ab6f678 ("anon_inode: rework assertions"). Christoph
pointed out that the fix belongs higher up: a pseudo filesystem has no
reason not to set SB_I_NOEXEC by default. This series does that.
* Patch 1 sets both flags in init_pseudo(), so every pseudo
filesystem gets them. This is the only patch that changes a flag,
and the only one with Fixes:/Cc: stable.
* Patch 2 drops the assignments that are now redundant in the callers
that set them by hand.
Most callers already set one or both flags. I audited every
init_pseudo() caller. Here is what patch 1 actually changes for each.
The only visible effect is on dma-buf, where SB_I_NOEXEC silences the
warning. SB_I_NODEV is never consulted on these SB_NOUSER mounts, and
none of the callers that gain SB_I_NOEXEC are executed from.
caller had patch 1 adds
--------------------------- -------- --------------
fs/anon_inodes.c both nothing new
mm/secretmem.c both nothing new
virt/kvm/guest_memfd.c both nothing new
fs/nsfs.c both nothing new
fs/pidfs.c both nothing new
fs/aio.c NOEXEC NODEV
drivers/dma-buf/dma-buf.c neither NOEXEC + NODEV
net/socket.c neither NOEXEC + NODEV
fs/pipe.c neither NOEXEC + NODEV
kernel/resource.c neither NOEXEC + NODEV
fs/erofs/super.c neither NOEXEC + NODEV
fs/btrfs/tests/... neither NOEXEC + NODEV
drivers/vfio/vfio_main.c neither NOEXEC + NODEV
drivers/gpu/drm/drm_drv.c neither NOEXEC + NODEV
drivers/dax/super.c neither NOEXEC + NODEV
block/bdev.c neither NOEXEC + NODEV
* patches from https://patch.msgid.link/20260604025315.245910-1-jhubbard@nvidia.com:
libfs: drop redundant SB_I_NOEXEC/SB_I_NODEV in init_pseudo() callers
libfs: set SB_I_NOEXEC and SB_I_NODEV by default in init_pseudo()
Link: https://patch.msgid.link/20260604025315.245910-1-jhubbard@nvidia.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
commit
f1f63c8967
1
fs/aio.c
1
fs/aio.c
|
|
@ -318,7 +318,6 @@ static int aio_init_fs_context(struct fs_context *fc)
|
|||
pfc = init_pseudo(fc, AIO_RING_MAGIC);
|
||||
if (!pfc)
|
||||
return -ENOMEM;
|
||||
fc->s_iflags |= SB_I_NOEXEC;
|
||||
pfc->ops = &aio_super_operations;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,8 +86,6 @@ static int anon_inodefs_init_fs_context(struct fs_context *fc)
|
|||
struct pseudo_fs_context *ctx = init_pseudo(fc, ANON_INODE_FS_MAGIC);
|
||||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
fc->s_iflags |= SB_I_NOEXEC;
|
||||
fc->s_iflags |= SB_I_NODEV;
|
||||
ctx->dops = &anon_inodefs_dentry_operations;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -736,6 +736,7 @@ struct pseudo_fs_context *init_pseudo(struct fs_context *fc,
|
|||
fc->fs_private = ctx;
|
||||
fc->ops = &pseudo_fs_context_ops;
|
||||
fc->sb_flags |= SB_NOUSER;
|
||||
fc->s_iflags |= SB_I_NOEXEC | SB_I_NODEV;
|
||||
fc->global = true;
|
||||
}
|
||||
return ctx;
|
||||
|
|
|
|||
|
|
@ -664,7 +664,6 @@ static int nsfs_init_fs_context(struct fs_context *fc)
|
|||
struct pseudo_fs_context *ctx = init_pseudo(fc, NSFS_MAGIC);
|
||||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
fc->s_iflags |= SB_I_NOEXEC | SB_I_NODEV;
|
||||
ctx->s_d_flags |= DCACHE_DONTCACHE;
|
||||
ctx->ops = &nsfs_ops;
|
||||
ctx->eops = &nsfs_export_operations;
|
||||
|
|
|
|||
|
|
@ -1115,8 +1115,6 @@ static int pidfs_init_fs_context(struct fs_context *fc)
|
|||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
|
||||
fc->s_iflags |= SB_I_NOEXEC;
|
||||
fc->s_iflags |= SB_I_NODEV;
|
||||
ctx->s_d_flags |= DCACHE_DONTCACHE;
|
||||
ctx->ops = &pidfs_sops;
|
||||
ctx->eops = &pidfs_export_operations;
|
||||
|
|
|
|||
|
|
@ -245,8 +245,6 @@ static int secretmem_init_fs_context(struct fs_context *fc)
|
|||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
|
||||
fc->s_iflags |= SB_I_NOEXEC;
|
||||
fc->s_iflags |= SB_I_NODEV;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -973,8 +973,6 @@ static int kvm_gmem_init_fs_context(struct fs_context *fc)
|
|||
if (!init_pseudo(fc, GUEST_MEMFD_MAGIC))
|
||||
return -ENOMEM;
|
||||
|
||||
fc->s_iflags |= SB_I_NOEXEC;
|
||||
fc->s_iflags |= SB_I_NODEV;
|
||||
ctx = fc->fs_private;
|
||||
ctx->ops = &kvm_gmem_super_operations;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user