exec: Allow load_misc_binary to call prepare_binprm unconditionally
authorEric W. Biederman <ebiederm@xmission.com>
Sat, 16 May 2020 11:02:54 +0000 (06:02 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Thu, 21 May 2020 15:16:57 +0000 (10:16 -0500)
commita16b3357b2b8e910bb614254d8a7e84d2bd59b4c
treed0a003e8cc8555bb5c87f38bc0a64addd21dd176
parent112b7147592e8f46bd1da4f961773e6d974f38a8
exec: Allow load_misc_binary to call prepare_binprm unconditionally

Add a flag preserve_creds that binfmt_misc can set to prevent
credentials from being updated.  This allows binfmt_misc to always
call prepare_binprm.  Allowing the credential computation logic to be
consolidated.

Not replacing the credentials with the interpreters credentials is
safe because because an open file descriptor to the executable is
passed to the interpreter.   As the interpreter does not need to
reopen the executable it is guaranteed to see the same file that
exec sees.

Ref: c407c033de84 ("[PATCH] binfmt_misc: improve calculation of interpreter's credentials")
Link: https://lkml.kernel.org/r/87imgszrwo.fsf_-_@x220.int.ebiederm.org
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
fs/binfmt_misc.c
fs/exec.c
include/linux/binfmts.h