diff options
| author | 2020-06-04 14:07:08 -0700 | |
|---|---|---|
| committer | 2020-06-04 14:07:08 -0700 | |
| commit | 15a2bc4dbb9cfed1c661a657fcb10798150b7598 (patch) | |
| tree | f9ca834dbdd2e6cf1d5a2cef5008f82c72b00261 /fs/binfmt_elf.c | |
| parent | Merge branch 'proc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace (diff) | |
| parent | exec: Remove the recomputation of bprm->cred (diff) | |
| download | wireguard-linux-15a2bc4dbb9cfed1c661a657fcb10798150b7598.tar.xz wireguard-linux-15a2bc4dbb9cfed1c661a657fcb10798150b7598.zip | |
Merge branch 'exec-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
Pull execve updates from Eric Biederman:
 "Last cycle for the Nth time I ran into bugs and quality of
  implementation issues related to exec that could not be easily be
  fixed because of the way exec is implemented. So I have been digging
  into exec and cleanup up what I can.
  I don't think I have exec sorted out enough to fix the issues I
  started with but I have made some headway this cycle with 4 sets of
  changes.
   - promised cleanups after introducing exec_update_mutex
   - trivial cleanups for exec
   - control flow simplifications
   - remove the recomputation of bprm->cred
  The net result is code that is a bit easier to understand and work
  with and a decrease in the number of lines of code (if you don't count
  the added tests)"
* 'exec-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (24 commits)
  exec: Compute file based creds only once
  exec: Add a per bprm->file version of per_clear
  binfmt_elf_fdpic: fix execfd build regression
  selftests/exec: Add binfmt_script regression test
  exec: Remove recursion from search_binary_handler
  exec: Generic execfd support
  exec/binfmt_script: Don't modify bprm->buf and then return -ENOEXEC
  exec: Move the call of prepare_binprm into search_binary_handler
  exec: Allow load_misc_binary to call prepare_binprm unconditionally
  exec: Convert security_bprm_set_creds into security_bprm_repopulate_creds
  exec: Factor security_bprm_creds_for_exec out of security_bprm_set_creds
  exec: Teach prepare_exec_creds how exec treats uids & gids
  exec: Set the point of no return sooner
  exec: Move handling of the point of no return to the top level
  exec: Run sync_mm_rss before taking exec_update_mutex
  exec: Fix spelling of search_binary_handler in a comment
  exec: Move the comment from above de_thread to above unshare_sighand
  exec: Rename flush_old_exec begin_new_exec
  exec: Move most of setup_new_exec into flush_old_exec
  exec: In setup_new_exec cache current in the local variable me
  ...
Diffstat (limited to 'fs/binfmt_elf.c')
| -rw-r--r-- | fs/binfmt_elf.c | 7 | 
1 files changed, 3 insertions, 4 deletions
| diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 8945671fe0e5..44813ceecc47 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -279,8 +279,8 @@ create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec,  		NEW_AUX_ENT(AT_BASE_PLATFORM,  			    (elf_addr_t)(unsigned long)u_base_platform);  	} -	if (bprm->interp_flags & BINPRM_FLAGS_EXECFD) { -		NEW_AUX_ENT(AT_EXECFD, bprm->interp_data); +	if (bprm->have_execfd) { +		NEW_AUX_ENT(AT_EXECFD, bprm->execfd);  	}  #undef NEW_AUX_ENT  	/* AT_NULL is zero; clear the rest too */ @@ -975,7 +975,7 @@ out_free_interp:  		goto out_free_dentry;  	/* Flush all traces of the currently running executable */ -	retval = flush_old_exec(bprm); +	retval = begin_new_exec(bprm);  	if (retval)  		goto out_free_dentry; @@ -989,7 +989,6 @@ out_free_interp:  		current->flags |= PF_RANDOMIZE;  	setup_new_exec(bprm); -	install_exec_creds(bprm);  	/* Do this so that we can load the interpreter, if need be.  We will  	   change some of these later */ | 
