• Linus Torvalds's avatar
    usermodehelper: reset umask to default before executing user process · ce843291
    Linus Torvalds authored
    commit 4013c149
    
     upstream.
    
    Kernel threads intentionally do CLONE_FS in order to follow any changes
    that 'init' does to set up the root directory (or cwd).
    
    It is admittedly a bit odd, but it avoids the situation where 'init'
    does some extensive setup to initialize the system environment, and then
    we execute a usermode helper program, and it uses the original FS setup
    from boot time that may be very limited and incomplete.
    
    [ Both Al Viro and Eric Biederman point out that 'pivot_root()' will
      follow the root regardless, since it fixes up other users of root (see
      chroot_fs_refs() for details), but overmounting root and doing a
      chroot() would not. ]
    
    However, Vegard Nossum noticed that the CLONE_FS not only means that we
    follow the root and current working directories, it also means we share
    umask with whatever init changed it to. That wasn't intentional.
    
    Just reset umask to the original default (0022) before actually starting
    the usermode helper program.
    Reported-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Acked-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ce843291
umh.c 19.8 KB