Commit 1b2552cb authored by Eric W. Biederman's avatar Eric W. Biederman
Browse files

fork: Stop allowing kthreads to call execve

Now that kernel_execve is no longer called from kernel threads stop
supporting kernel threads calling kernel_execve.

Remove the code for converting a kthread to a normal thread in execve.

Document the restriction that kthreads may not call kernel_execve by
having kernel_execve fail if called by a kthread.

Link: https://lkml.kernel.org/r/20220506141512.516114-7-ebiederm@xmission.com


Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 753550eb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1308,7 +1308,7 @@ int begin_new_exec(struct linux_binprm * bprm)
	if (retval)
		goto out_unlock;

	me->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD |
	me->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC |
					PF_NOFREEZE | PF_NO_SETAFFINITY);
	flush_thread();
	me->personality &= ~bprm->per_clear;
@@ -1953,8 +1953,8 @@ int kernel_execve(const char *kernel_filename,
	int fd = AT_FDCWD;
	int retval;

	if (WARN_ON_ONCE((current->flags & PF_KTHREAD) &&
			(current->worker_private)))
	/* It is non-sense for kernel threads to call execve */
	if (WARN_ON_ONCE(current->flags & PF_KTHREAD))
		return -EINVAL;

	filename = getname_kernel(kernel_filename);