v6.6-fs.proc.uapi
-----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCZOXT2QAKCRCRxhvAZXjc olkFAQCT4nRkRTpBvbiv4DgvCIy+URqLNfHGxCxdAX1B09o3UwEAyepf1tz7aFpB wB67V265JFDMWtvQkSx4ORNpAjZ9Kg0= =Opqi -----END PGP SIGNATURE----- Merge tag 'v6.6-fs.proc.uapi' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs Pull procfs fixes from Christian Brauner: "Mode changes to files under /proc/<pid>/ aren't supported ever since commit6d76fa58b0
("Don't allow chmod() on the /proc/<pid>/ files"). Due to an oversight in commit1b3044e39a
("procfs: fix pthread cross-thread naming if !PR_DUMPABLE") in switching from REG to NOD, mode changes on /proc/thread-self/comm were accidently allowed. Similar, mode changes for all files beneath /proc/<pid>/net/ are blocked but mode changes on /proc/<pid>/net itself were accidently allowed. Both issues come down to not using the generic proc_setattr() helper which blocks all mode changes. This is rectified with this pull request. This also removes a strange nolibc test that abused /proc/<pid>/net for testing mode changes. Using procfs for this test never made a lot of sense given procfs has special semantics for almost everything anway. Both changes are minor user-visible changes. It is however very unlikely that mode changes on proc/<pid>/net and /proc/thread-self/comm are something that userspace relies on" * tag 'v6.6-fs.proc.uapi' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: procfs: block chmod on /proc/thread-self/comm proc: use generic setattr() for /proc/$PID/net selftests/nolibc: drop test chmod_net
This commit is contained in:
commit
b4a04f92a4
|
@ -3583,7 +3583,8 @@ static int proc_tid_comm_permission(struct mnt_idmap *idmap,
|
|||
}
|
||||
|
||||
static const struct inode_operations proc_tid_comm_inode_operations = {
|
||||
.permission = proc_tid_comm_permission,
|
||||
.setattr = proc_setattr,
|
||||
.permission = proc_tid_comm_permission,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -321,6 +321,7 @@ static int proc_tgid_net_getattr(struct mnt_idmap *idmap,
|
|||
const struct inode_operations proc_net_inode_operations = {
|
||||
.lookup = proc_tgid_net_lookup,
|
||||
.getattr = proc_tgid_net_getattr,
|
||||
.setattr = proc_setattr,
|
||||
};
|
||||
|
||||
static int proc_tgid_net_readdir(struct file *file, struct dir_context *ctx)
|
||||
|
|
|
@ -577,7 +577,6 @@ int run_syscall(int min, int max)
|
|||
CASE_TEST(chdir_root); EXPECT_SYSZR(1, chdir("/")); break;
|
||||
CASE_TEST(chdir_dot); EXPECT_SYSZR(1, chdir(".")); break;
|
||||
CASE_TEST(chdir_blah); EXPECT_SYSER(1, chdir("/blah"), -1, ENOENT); break;
|
||||
CASE_TEST(chmod_net); EXPECT_SYSZR(proc, chmod("/proc/self/net", 0555)); break;
|
||||
CASE_TEST(chmod_self); EXPECT_SYSER(proc, chmod("/proc/self", 0555), -1, EPERM); break;
|
||||
CASE_TEST(chown_self); EXPECT_SYSER(proc, chown("/proc/self", 0, 0), -1, EPERM); break;
|
||||
CASE_TEST(chroot_root); EXPECT_SYSZR(euid0, chroot("/")); break;
|
||||
|
|
Loading…
Reference in New Issue