• O
    sys_unshare: remove the dead CLONE_THREAD/SIGHAND/VM code · 9bfb23fc
    Oleg Nesterov 提交于
    Cleanup: kill the dead code which does nothing but complicates the code
    and confuses the reader.
    
    sys_unshare(CLONE_THREAD/SIGHAND/VM) is not really implemented, and I
    doubt very much it will ever work.  At least, nobody even tried since the
    original 99d1419d ("unshare system call -v5: system call
    handler function") was applied more than 4 years ago.
    
    And the code is not consistent.  unshare_thread() always fails
    unconditionally, while unshare_sighand() and unshare_vm() pretend to work
    if there is nothing to unshare.
    
    Remove unshare_thread(), unshare_sighand(), unshare_vm() helpers and
    related variables and add a simple CLONE_THREAD | CLONE_SIGHAND| CLONE_VM
    check into check_unshare_flags().
    
    Also, move the "CLONE_NEWNS needs CLONE_FS" check from
    check_unshare_flags() to sys_unshare().  This looks more consistent and
    matches the similar do_sysvsem check in sys_unshare().
    
    Note: with or without this patch "atomic_read(mm->mm_users) > 1" can give
    a false positive due to get_task_mm().
    Signed-off-by: NOleg Nesterov <oleg@redhat.com>
    Acked-by: NRoland McGrath <roland@redhat.com>
    Cc: Janak Desai <janak@us.ibm.com>
    Cc: Daniel Lezcano <daniel.lezcano@free.fr>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Acked-by: NSerge Hallyn <serge.hallyn@canonical.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    9bfb23fc
fork.c 40.4 KB