• Linus Torvalds's avatar
    /proc/<pid>/cmdline: add back the setproctitle() special case · d26d0cd9
    Linus Torvalds authored
    This makes the setproctitle() special case very explicit indeed, and
    handles it with a separate helper function entirely.  In the process, it
    re-instates the original semantics of simply stopping at the first NUL
    character when the original last NUL character is no longer there.
    
    [ The original semantics can still be seen in mm/util.c: get_cmdline()
      that is limited to a fixed-size buffer ]
    
    This makes the logic about when we use the string lengths etc much more
    obvious, and makes it easier to see what we do and what the two very
    different cases are.
    
    Note that even when we allow walking past the end of the argument array
    (because the setproctitle() might have overwritten and overflowed the
    original argv[] strings), we only allow it when it overflows into the
    environment region if it is immediately adjacent.
    
    [ Fixed for missing 'count' checks noted by Alexey Izbyshev ]
    
    Link: https://lore.kernel.org/lkml/alpine.LNX.2.21.1904052326230.3249@kich.toxcorp.com/
    Fixes: 5ab82718 ("fs/proc: simplify and clarify get_mm_cmdline() function")
    Cc: Jakub Jankowski <shasta@toxcorp.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Alexey Izbyshev <izbyshev@ispras.ru>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    d26d0cd9
base.c 87.9 KB