exec: Implement kernel_execve
authorEric W. Biederman <ebiederm@xmission.com>
Mon, 13 Jul 2020 17:06:48 +0000 (12:06 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Tue, 21 Jul 2020 13:24:52 +0000 (08:24 -0500)
commitbe619f7f063a49c656f620a46af4f8ea3e759e91
treebe0f257b8da82e9e2eb9bdaa2574a48221e7b516
parentd8b9cd549ecf0f3dc8da42ada5f0ce73e8ed5f1e
exec: Implement kernel_execve

To allow the kernel not to play games with set_fs to call exec
implement kernel_execve.  The function kernel_execve takes pointers
into kernel memory and copies the values pointed to onto the new
userspace stack.

The calls with arguments from kernel space of do_execve are replaced
with calls to kernel_execve.

The calls do_execve and do_execveat are made static as there are now
no callers outside of exec.

The comments that mention do_execve are updated to refer to
kernel_execve or execve depending on the circumstances.  In addition
to correcting the comments, this makes it easy to grep for do_execve
and verify it is not used.

Inspired-by: https://lkml.kernel.org/r/20200627072704.2447163-1-hch@lst.de
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lkml.kernel.org/r/87wo365ikj.fsf@x220.int.ebiederm.org
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
arch/x86/entry/entry_32.S
arch/x86/entry/entry_64.S
arch/x86/kernel/unwind_frame.c
fs/exec.c
include/linux/binfmts.h
init/main.c
kernel/umh.c
security/tomoyo/common.h
security/tomoyo/domain.c
security/tomoyo/tomoyo.c