Commit 4b06c990 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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()
parents e0a02923 923936ef
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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
+4 −3
Original line number Diff line number Diff line
@@ -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
+4 −3
Original line number Diff line number Diff line
@@ -128,10 +128,11 @@ struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache,
		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);
+9 −6
Original line number Diff line number Diff line
@@ -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(&current->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 @@ static int bprm_execve(struct linux_binprm *bprm)
		force_fatal_sig(SIGSEGV);

	sched_mm_cid_after_execve(current);
	current->fs->in_exec = 0;
	current->in_execve = 0;

	return retval;
+1 −0
Original line number Diff line number Diff line
@@ -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");
Loading