mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
vfs-6.15-rc1.fixes
-----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCZ+1ZqAAKCRCRxhvAZXjc oqO7AP4jdW03PHsk5zkbuUTzTTngkZQ1AypIJLTCYIoKPATMowD+ILMjOTsVOfxA h38ziAM3tubsz1pwkGuIlsU+drwz5Ao= =QfJV -----END PGP SIGNATURE----- Merge tag 'vfs-6.15-rc1.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs Pull vfs fixes from Christian Brauner: - Add a new maintainer for configfs - Fix exportfs module description - Place flexible array memeber at the end of an internal struct in the mount code - Add new maintainer for netfslib as Jeff Layton is stepping down as current co-maintainer - Fix error handling in cachefiles_get_directory() - Cleanup do_notify_pidfd() - Fix syscall number definitions in pidfd selftests - Fix racy usage of fs_struct->in exec during multi-threaded exec - Ensure correct exit code is reported when pidfs_exit() is called from release_task() for a delayed thread-group leader exit - Fix conflicting iomap flag definitions * tag 'vfs-6.15-rc1.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: iomap: Fix conflicting values of iomap flags fs: namespace: Avoid -Wflex-array-member-not-at-end warning MAINTAINERS: configfs: add Andreas Hindborg as maintainer exportfs: add module description exit: fix the usage of delay_group_leader->exit_code in do_notify_parent() and pidfs_exit() netfs: add Paulo as maintainer and remove myself as Reviewer cachefiles: Fix oops in vfs_mkdir from cachefiles_get_directory exec: fix the racy usage of fs_struct->in_exec selftests/pidfd: fixes syscall number defines pidfs: cleanup the usage of do_notify_pidfd()
This commit is contained in:
commit
4b06c990c1
4
CREDITS
4
CREDITS
|
@ -317,6 +317,10 @@ S: Code 930.5, Goddard Space Flight Center
|
|||
S: Greenbelt, Maryland 20771
|
||||
S: USA
|
||||
|
||||
N: Joel Becker
|
||||
E: jlbec@evilplan.org
|
||||
D: configfs
|
||||
|
||||
N: Adam Belay
|
||||
E: ambx1@neo.rr.com
|
||||
D: Linux Plug and Play Support
|
||||
|
|
|
@ -5967,9 +5967,10 @@ S: Maintained
|
|||
F: Documentation/security/snp-tdx-threat-model.rst
|
||||
|
||||
CONFIGFS
|
||||
M: Joel Becker <jlbec@evilplan.org>
|
||||
M: Andreas Hindborg <a.hindborg@kernel.org>
|
||||
R: Breno Leitao <leitao@debian.org>
|
||||
S: Supported
|
||||
T: git git://git.infradead.org/users/hch/configfs.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git configfs-next
|
||||
F: fs/configfs/
|
||||
F: include/linux/configfs.h
|
||||
F: samples/configfs/
|
||||
|
@ -9106,7 +9107,7 @@ F: include/linux/iomap.h
|
|||
|
||||
FILESYSTEMS [NETFS LIBRARY]
|
||||
M: David Howells <dhowells@redhat.com>
|
||||
R: Jeff Layton <jlayton@kernel.org>
|
||||
M: Paulo Alcantara <pc@manguebit.com>
|
||||
L: netfs@lists.linux.dev
|
||||
L: linux-fsdevel@vger.kernel.org
|
||||
S: Supported
|
||||
|
|
|
@ -128,10 +128,11 @@ retry:
|
|||
ret = security_path_mkdir(&path, subdir, 0700);
|
||||
if (ret < 0)
|
||||
goto mkdir_error;
|
||||
subdir = ERR_PTR(cachefiles_inject_write_error());
|
||||
if (!IS_ERR(subdir))
|
||||
ret = cachefiles_inject_write_error();
|
||||
if (ret == 0)
|
||||
subdir = vfs_mkdir(&nop_mnt_idmap, d_inode(dir), subdir, 0700);
|
||||
ret = PTR_ERR(subdir);
|
||||
else
|
||||
subdir = ERR_PTR(ret);
|
||||
if (IS_ERR(subdir)) {
|
||||
trace_cachefiles_vfs_error(NULL, d_inode(dir), ret,
|
||||
cachefiles_trace_mkdir_error);
|
||||
|
|
15
fs/exec.c
15
fs/exec.c
|
@ -1227,13 +1227,12 @@ int begin_new_exec(struct linux_binprm * bprm)
|
|||
*/
|
||||
bprm->point_of_no_return = true;
|
||||
|
||||
/*
|
||||
* Make this the only thread in the thread group.
|
||||
*/
|
||||
/* Make this the only thread in the thread group */
|
||||
retval = de_thread(me);
|
||||
if (retval)
|
||||
goto out;
|
||||
|
||||
/* see the comment in check_unsafe_exec() */
|
||||
current->fs->in_exec = 0;
|
||||
/*
|
||||
* Cancel any io_uring activity across execve
|
||||
*/
|
||||
|
@ -1495,6 +1494,8 @@ static void free_bprm(struct linux_binprm *bprm)
|
|||
}
|
||||
free_arg_pages(bprm);
|
||||
if (bprm->cred) {
|
||||
/* in case exec fails before de_thread() succeeds */
|
||||
current->fs->in_exec = 0;
|
||||
mutex_unlock(¤t->signal->cred_guard_mutex);
|
||||
abort_creds(bprm->cred);
|
||||
}
|
||||
|
@ -1616,6 +1617,10 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
|
|||
* suid exec because the differently privileged task
|
||||
* will be able to manipulate the current directory, etc.
|
||||
* It would be nice to force an unshare instead...
|
||||
*
|
||||
* Otherwise we set fs->in_exec = 1 to deny clone(CLONE_FS)
|
||||
* from another sub-thread until de_thread() succeeds, this
|
||||
* state is protected by cred_guard_mutex we hold.
|
||||
*/
|
||||
n_fs = 1;
|
||||
spin_lock(&p->fs->lock);
|
||||
|
@ -1860,7 +1865,6 @@ static int bprm_execve(struct linux_binprm *bprm)
|
|||
|
||||
sched_mm_cid_after_execve(current);
|
||||
/* execve succeeded */
|
||||
current->fs->in_exec = 0;
|
||||
current->in_execve = 0;
|
||||
rseq_execve(current);
|
||||
user_events_execve(current);
|
||||
|
@ -1879,7 +1883,6 @@ out:
|
|||
force_fatal_sig(SIGSEGV);
|
||||
|
||||
sched_mm_cid_after_execve(current);
|
||||
current->fs->in_exec = 0;
|
||||
current->in_execve = 0;
|
||||
|
||||
return retval;
|
||||
|
|
|
@ -608,4 +608,5 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(exportfs_decode_fh);
|
||||
|
||||
MODULE_DESCRIPTION("Code mapping from inodes to file handles");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
|
@ -5326,8 +5326,10 @@ struct kstatmount {
|
|||
struct mnt_idmap *idmap;
|
||||
u64 mask;
|
||||
struct path root;
|
||||
struct statmount sm;
|
||||
struct seq_file seq;
|
||||
|
||||
/* Must be last --ends in a flexible-array member. */
|
||||
struct statmount sm;
|
||||
};
|
||||
|
||||
static u64 mnt_to_attr_flags(struct vfsmount *mnt)
|
||||
|
|
|
@ -78,6 +78,11 @@ struct vm_fault;
|
|||
#define IOMAP_F_ANON_WRITE (1U << 7)
|
||||
#define IOMAP_F_ATOMIC_BIO (1U << 8)
|
||||
|
||||
/*
|
||||
* Flag reserved for file system specific usage
|
||||
*/
|
||||
#define IOMAP_F_PRIVATE (1U << 12)
|
||||
|
||||
/*
|
||||
* Flags set by the core iomap code during operations:
|
||||
*
|
||||
|
@ -88,14 +93,8 @@ struct vm_fault;
|
|||
* range it covers needs to be remapped by the high level before the operation
|
||||
* can proceed.
|
||||
*/
|
||||
#define IOMAP_F_SIZE_CHANGED (1U << 8)
|
||||
#define IOMAP_F_STALE (1U << 9)
|
||||
|
||||
/*
|
||||
* Flags from 0x1000 up are for file system specific usage:
|
||||
*/
|
||||
#define IOMAP_F_PRIVATE (1U << 12)
|
||||
|
||||
#define IOMAP_F_SIZE_CHANGED (1U << 14)
|
||||
#define IOMAP_F_STALE (1U << 15)
|
||||
|
||||
/*
|
||||
* Magic value for addr:
|
||||
|
|
|
@ -268,6 +268,9 @@ repeat:
|
|||
leader = p->group_leader;
|
||||
if (leader != p && thread_group_empty(leader)
|
||||
&& leader->exit_state == EXIT_ZOMBIE) {
|
||||
/* for pidfs_exit() and do_notify_parent() */
|
||||
if (leader->signal->flags & SIGNAL_GROUP_EXIT)
|
||||
leader->exit_code = leader->signal->group_exit_code;
|
||||
/*
|
||||
* If we were the last child thread and the leader has
|
||||
* exited already, and the leader's parent ignores SIGCHLD,
|
||||
|
@ -756,12 +759,6 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
|
|||
kill_orphaned_pgrp(tsk->group_leader, NULL);
|
||||
|
||||
tsk->exit_state = EXIT_ZOMBIE;
|
||||
/*
|
||||
* Ignore thread-group leaders that exited before all
|
||||
* subthreads did.
|
||||
*/
|
||||
if (!delay_group_leader(tsk))
|
||||
do_notify_pidfd(tsk);
|
||||
|
||||
if (unlikely(tsk->ptrace)) {
|
||||
int sig = thread_group_leader(tsk) &&
|
||||
|
@ -774,6 +771,8 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
|
|||
do_notify_parent(tsk, tsk->exit_signal);
|
||||
} else {
|
||||
autoreap = true;
|
||||
/* untraced sub-thread */
|
||||
do_notify_pidfd(tsk);
|
||||
}
|
||||
|
||||
if (autoreap) {
|
||||
|
|
|
@ -2180,11 +2180,9 @@ bool do_notify_parent(struct task_struct *tsk, int sig)
|
|||
|
||||
WARN_ON_ONCE(!tsk->ptrace &&
|
||||
(tsk->group_leader != tsk || !thread_group_empty(tsk)));
|
||||
/*
|
||||
* Notify for thread-group leaders without subthreads.
|
||||
*/
|
||||
if (thread_group_empty(tsk))
|
||||
do_notify_pidfd(tsk);
|
||||
|
||||
/* ptraced, or group-leader without sub-threads */
|
||||
do_notify_pidfd(tsk);
|
||||
|
||||
if (sig != SIGCHLD) {
|
||||
/*
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#define ptr_to_u64(ptr) ((__u64)((uintptr_t)(ptr)))
|
||||
|
||||
#ifndef __NR_clone3
|
||||
#define __NR_clone3 -1
|
||||
#define __NR_clone3 435
|
||||
#endif
|
||||
|
||||
struct __clone_args {
|
||||
|
|
|
@ -32,19 +32,19 @@
|
|||
#endif
|
||||
|
||||
#ifndef __NR_pidfd_open
|
||||
#define __NR_pidfd_open -1
|
||||
#define __NR_pidfd_open 434
|
||||
#endif
|
||||
|
||||
#ifndef __NR_pidfd_send_signal
|
||||
#define __NR_pidfd_send_signal -1
|
||||
#define __NR_pidfd_send_signal 424
|
||||
#endif
|
||||
|
||||
#ifndef __NR_clone3
|
||||
#define __NR_clone3 -1
|
||||
#define __NR_clone3 435
|
||||
#endif
|
||||
|
||||
#ifndef __NR_pidfd_getfd
|
||||
#define __NR_pidfd_getfd -1
|
||||
#define __NR_pidfd_getfd 438
|
||||
#endif
|
||||
|
||||
#ifndef PIDFD_NONBLOCK
|
||||
|
|
Loading…
Reference in New Issue
Block a user