On Tue, Jul 14, 2020 at 08:29:05AM -0500, Eric W. Biederman wrote: > > Currently it is necessary for the usermode helper code and the code > that launches init to use set_fs so that pages coming from the kernel > look like they are coming from userspace. > > To allow that usage of set_fs to be removed cleanly the argument > copying from userspace needs to happen earlier. Move the allocation > of the bprm into it's own function (alloc_bprm) and move the call of > alloc_bprm before unshare_files so that bprm can ultimately be > allocated, the arguments can be placed on the new stack, and then the > bprm can be passed into the core of exec. > > Neither the allocation of struct binprm nor the unsharing depend upon each > other so swapping the order in which they are called is trivially safe. > > To keep things consistent the order of cleanup at the end of > do_execve_common swapped to match the order of initialization. > > Signed-off-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx> -- Kees Cook