lkml.org 
[lkml]   [2020]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    Subject[PATCH 0/7] Implementing kernel_execve

    This set of changes implements kernel_execve to remove the need for
    kernel threads to pass in pointers to in-kernel data structures
    to functions that take __user pointers. Which is part of the
    greater removal of set_fs work.

    This set of changes makes do_execve static and so I have updated the
    comments. This affects the comments in the x86 entry point code
    and the comments in tomoyo. I believe I have updated them correctly.
    If not please let me know.

    I have moved the calls of copy_strings before the call of
    security_bprm_creds_for_exec. Which might be of interest to the
    security folks. I can't see that it matters but I have copied the
    security folks just to be certain.

    By moving the initialization of the new stack that copy_strings does
    earlier it becomes possible to copy all of the parameters to exec before
    anything else is done which makes it possible to have one function
    kernel_execve that uncondtionally handles copying parameters from kernel
    space, and another function do_execveat_common which handles copying
    parameters from userspace.

    This work was inspired by Christoph Hellwig's similar patchset, which my
    earlier work to remove the file parameter to do_execveat_common
    conflicted with.
    https://lore.kernel.org/linux-fsdevel/20200627072704.2447163-1-hch@lst.de/

    I figured that after causing all of that trouble for the set_fs work
    the least I could do is implement the change myself.

    The big practical change from Christoph's work is that he did not
    separate out the copying of parameters from the rest of the work of
    exec, which did not help the maintainability of the code.

    Please let me know if you see something wrong.

    This set of changes is against my exec-next branch:
    https://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace.git exec-next

    Eric W. Biederman (7):
    exec: Remove unnecessary spaces from binfmts.h
    exec: Factor out alloc_bprm
    exec: Move initialization of bprm->filename into alloc_bprm
    exec: Move bprm_mm_init into alloc_bprm
    exec: Factor bprm_execve out of do_execve_common
    exec: Factor bprm_stack_limits out of prepare_arg_pages
    exec: Implement kernel_execve

    arch/x86/entry/entry_32.S | 2 +-
    arch/x86/entry/entry_64.S | 2 +-
    arch/x86/kernel/unwind_frame.c | 2 +-
    fs/exec.c | 301 ++++++++++++++++++++++++++++-------------
    include/linux/binfmts.h | 20 ++-
    init/main.c | 4 +-
    kernel/umh.c | 6 +-
    security/tomoyo/common.h | 2 +-
    security/tomoyo/domain.c | 4 +-
    security/tomoyo/tomoyo.c | 4 +-
    10 files changed, 224 insertions(+), 123 deletions(-)

    Eric

    \
     
     \ /
      Last update: 2020-07-14 15:30    [W:4.533 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site