Ubuntu-focal-kernel/fs
Max Kellermann e8a68b9a75 fs/kernfs/dir: obey S_ISGID
BugLink: https://bugs.launchpad.net/bugs/2058948

[ Upstream commit 5133bee62f0ea5d4c316d503cc0040cac5637601 ]

Handling of S_ISGID is usually done by inode_init_owner() in all other
filesystems, but kernfs doesn't use that function.  In kernfs, struct
kernfs_node is the primary data structure, and struct inode is only
created from it on demand.  Therefore, inode_init_owner() can't be
used and we need to imitate its behavior.

S_ISGID support is useful for the cgroup filesystem; it allows
subtrees managed by an unprivileged process to retain a certain owner
gid, which then enables sharing access to the subtree with another
unprivileged process.

--
v1 -> v2: minor coding style fix (comment)

Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20231208093310.297233-2-max.kellermann@ionos.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
2024-03-28 15:18:38 +01:00
..
9p 9p: missing chunk of "fs/9p: Don't update file type when updating file attributes" 2022-08-26 11:09:34 +02:00
adfs
affs affs: initialize fsdata in affs_truncate() 2023-03-21 10:08:57 +01:00
afs afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*() 2024-03-28 15:18:34 +01:00
aufs
autofs autofs: fix memory leak of waitqueues in autofs_catatonic_mode 2023-10-30 11:42:21 +01:00
befs
bfs
btrfs btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args 2024-03-28 15:18:32 +01:00
cachefiles
ceph ceph: fix incorrect revoked caps assert in ceph_fill_file_size() 2024-01-05 14:29:54 +01:00
cifs smb: client: fix NULL deref in asn1_ber_decoder() 2024-02-12 09:10:25 +01:00
coda coda: Avoid partial allocation of sig_inputArgs 2023-05-12 17:15:07 +02:00
configfs configfs: fix possible memory leak in configfs_create_dir() 2023-02-01 15:22:34 +01:00
cramfs
crypto
debugfs new helper: lookup_positive_unlocked() 2023-10-30 11:42:07 +01:00
devpts fsnotify: fix fsnotify hooks in pseudo filesystems 2022-03-29 09:13:38 +02:00
dlm dlm: fix plock lookup when using multiple lockspaces 2023-10-30 11:42:17 +01:00
ecryptfs ecryptfs: Reject casefold directory inodes 2024-03-28 15:18:34 +01:00
efivarfs
efs
erofs erofs: ensure that the post-EOF tails are all zeroed 2023-10-30 11:42:04 +01:00
exportfs
ext2 ext2: fix datatype of block number in ext2_xattr_set2() 2023-10-30 11:42:22 +01:00
ext4 ext4: avoid online resizing failures due to oversized flex bg 2024-03-28 15:18:35 +01:00
f2fs f2fs: fix to check return value of f2fs_reserve_new_block() 2024-03-28 15:18:36 +01:00
fat treewide: Remove uninitialized_var() usage 2023-08-09 12:25:41 +02:00
freevxfs
fscache
fuse fuse: nlookup missing decrement in fuse_direntplus_link 2023-10-30 11:42:20 +01:00
gfs2 gfs2: Fix kernel NULL pointer dereference in gfs2_rgrp_dump 2024-02-29 15:23:35 +01:00
hfs hfs: fix missing hfs_bnode_get() in __hfs_bnode_create 2023-05-12 17:15:08 +02:00
hfsplus treewide: Remove uninitialized_var() usage 2023-08-09 12:25:41 +02:00
hostfs
hpfs
hugetlbfs hugetlbfs: fix null-ptr-deref in hugetlbfs_parse_param() 2023-02-01 15:23:14 +01:00
iomap iomap: iomap_write_failed fix 2022-08-26 11:07:50 +02:00
isofs treewide: Remove uninitialized_var() usage 2023-08-09 12:25:41 +02:00
jbd2 jbd2: correct the printing of write_flags in jbd2_write_superblock() 2024-02-29 15:23:32 +01:00
jffs2 jffs2: reduce stack usage in jffs2_build_xattr_subsystem() 2023-10-02 12:12:08 +02:00
jfs jfs: fix array-index-out-of-bounds in diNewExt 2024-03-28 15:18:34 +01:00
kernfs fs/kernfs/dir: obey S_ISGID 2024-03-28 15:18:38 +01:00
lockd fs: lockd: avoid possible wrong NULL parameter 2023-10-30 11:42:12 +01:00
minix minix: fix bug when opening a file with O_DIRECT 2022-05-20 15:19:50 +02:00
nfs NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT 2024-02-29 15:23:35 +01:00
nfs_common
nfsd nfsd: fix file memleak on client_opens_release 2024-02-02 14:13:12 +01:00
nilfs2 nilfs2: fix missing error check for sb_set_blocksize call 2024-02-02 14:13:20 +01:00
nls fs/nls: make load_nls() take a const parameter 2023-10-30 11:42:06 +01:00
notify fanotify: disallow mount/sb marks on kernel internal pseudo fs 2023-10-02 12:12:09 +02:00
ntfs ntfs: check overflow when iterating ATTR_RECORDs 2023-02-01 15:21:19 +01:00
ocfs2 fs: move S_ISGID stripping into the vfs_*() helpers 2024-03-28 15:18:31 +01:00
omfs treewide: Remove uninitialized_var() usage 2023-08-09 12:25:41 +02:00
openpromfs
orangefs orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init() 2023-02-01 15:23:14 +01:00
overlayfs ovl: skip overlayfs superblocks at global sync 2024-02-02 14:13:17 +01:00
proc procfs: block chmod on /proc/thread-self/comm 2023-10-30 11:42:17 +01:00
pstore pstore/ram: Fix crash when setting number of cpus to an odd number 2024-03-28 15:18:34 +01:00
qnx4
qnx6
quota quota: explicitly forbid quota files from being encrypted 2024-02-02 14:13:10 +01:00
ramfs
reiserfs reiserfs: Check the return value from __getblk() 2023-10-30 11:42:07 +01:00
romfs
squashfs revert "squashfs: harden sanity check in squashfs_read_xattr_id_table" 2023-04-18 17:21:04 +02:00
sysfs
sysv fs/sysv: Null check to prevent null-ptr-deref bug 2023-10-30 11:41:50 +01:00
tracefs tracefs: Add missing lockdown check to tracefs_create_dir() 2023-10-30 11:42:24 +01:00
ubifs ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path 2024-03-28 15:18:31 +01:00
udf udf: initialize newblock to 0 2023-10-30 11:42:17 +01:00
ufs
unicode
verity fsverity: skip PKCS#7 parser when keyring is empty 2023-10-30 11:42:17 +01:00
xfs treewide: Remove uninitialized_var() usage 2023-08-09 12:25:41 +02:00
Kconfig
Kconfig.binfmt
Makefile
aio.c aio: fix mremap after fork null-deref 2023-04-18 17:21:02 +02:00
anon_inodes.c
attr.c attr: block mode changes of symlinks 2023-10-30 11:42:24 +01:00
bad_inode.c
binfmt_aout.c binfmt: Move install_exec_creds after setup_new_exec to match binfmt_elf 2023-02-01 15:23:24 +01:00
binfmt_elf.c
binfmt_elf_fdpic.c fs: binfmt_elf_efpic: fix personality for ELF-FDPIC 2024-01-05 14:29:50 +01:00
binfmt_em86.c
binfmt_flat.c binfmt: Move install_exec_creds after setup_new_exec to match binfmt_elf 2023-02-01 15:23:24 +01:00
binfmt_misc.c binfmt_misc: fix shift-out-of-bounds in check_special_flags 2023-02-01 15:23:09 +01:00
binfmt_script.c
block_dev.c block: Don't invalidate pagecache for invalid falloc modes 2024-02-12 09:10:26 +01:00
buffer.c mm: fs: initialize fsdata passed to write_begin/write_end interface 2023-02-01 15:21:19 +01:00
char_dev.c chardev: fix error handling in cdev_device_add() 2023-02-01 15:22:55 +01:00
compat.c
compat_binfmt_elf.c
compat_ioctl.c compat_ioctl: remove /dev/random commands 2022-08-26 11:09:36 +02:00
coredump.c
d_path.c
dax.c dax: fix cache flush on PMD-mapped pages 2022-08-26 11:08:09 +02:00
dcache.c fast_dput(): handle underflows gracefully 2024-03-28 15:18:36 +01:00
dcookies.c
direct-io.c
drop_caches.c
eventfd.c eventfd: prevent underflow for eventfd semaphores 2023-10-30 11:42:07 +01:00
eventpoll.c epoll: ep_autoremove_wake_function should use list_del_init_careful 2023-10-02 12:11:56 +02:00
exec.c exec: Force single empty string when argv is empty 2022-08-26 11:07:01 +02:00
fcntl.c
fhandle.c
file.c fs: prevent out-of-bounds array speculation when closing a file descriptor 2023-07-10 17:21:38 +02:00
file_table.c
filesystems.c
fs-writeback.c writeback: fix call of incorrect macro 2023-08-09 12:25:24 +02:00
fs_context.c fs: avoid empty option when generating legacy mount string 2023-10-02 12:12:08 +02:00
fs_parser.c
fs_pin.c
fs_struct.c
fs_types.c
fsopen.c
inode.c fs: move S_ISGID stripping into the vfs_*() helpers 2024-03-28 15:18:31 +01:00
internal.h fs: Establish locking order for unrelated directories 2023-10-02 12:12:09 +02:00
io_uring.c io_uring/af_unix: disable sending io_uring over sockets 2024-02-02 14:13:20 +01:00
ioctl.c
libfs.c libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value 2023-02-01 15:22:15 +01:00
locks.c locks: fix KASAN: use-after-free in trace_event_raw_event_filelock_lock 2023-10-30 11:42:21 +01:00
mbcache.c mbcache: Avoid nesting of cache->c_list_lock under bit locks 2023-02-01 15:23:42 +01:00
mount.h proc/mounts: add cursor 2023-09-01 14:48:47 +02:00
mpage.c
namei.c fs: move S_ISGID stripping into the vfs_*() helpers 2024-03-28 15:18:31 +01:00
namespace.c proc/mounts: add cursor 2023-09-01 14:48:47 +02:00
no-block.c
nsfs.c
open.c
pipe.c
pnode.c pnode: terminate at peers of source 2023-02-01 15:23:20 +01:00
pnode.h
posix_acl.c
proc_namespace.c proc/mounts: add cursor 2023-09-01 14:48:47 +02:00
read_write.c
readdir.c
select.c select: Fix indefinitely sleeping task in poll_schedule_timeout() 2022-03-29 09:13:35 +02:00
seq_file.c
shiftfs.c UBUNTU: SAUCE: shiftfs: prevent lock unbalance in shiftfs_create_object() 2023-05-12 17:15:16 +02:00
signalfd.c io_uring: disable polling pollfree files 2022-09-20 11:10:27 +02:00
splice.c Revert "fs: check FMODE_LSEEK to control internal pipe splicing" 2022-11-23 16:35:24 -03:00
stack.c
stat.c stat: fix inconsistency between struct stat and struct compat_stat 2022-06-22 14:50:51 +02:00
statfs.c statfs: enforce statfs[64] structure initialization 2023-08-09 12:25:32 +02:00
super.c fs: Protect reconfiguration of sb read-write from racing writes 2023-10-30 11:41:50 +01:00
sync.c ovl: skip overlayfs superblocks at global sync 2024-02-02 14:13:17 +01:00
timerfd.c
userfaultfd.c userfaultfd: open userfaultfds with O_RDONLY 2023-01-06 08:43:54 -08:00
utimes.c
xattr.c fs: don't audit the capability check in simple_xattr_list() 2023-02-01 15:22:13 +01:00