• Eric W. Biederman's avatar
    exec: Factor out alloc_bprm · 0a8f36eb
    Eric W. Biederman authored
    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.
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Link: https://lkml.kernel.org/r/87pn8y6x9a.fsf@x220.int.ebiederm.orgSigned-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    0a8f36eb
exec.c 48.8 KB