• O
    fix the "remove task_ppid_nr_ns" commit · a98fdcef
    Oleg Nesterov 提交于
    Commit 84427eae (remove task_ppid_nr_ns)
    moved the task_tgid_nr_ns(task->real_parent) outside of lock_task_sighand().
    This is wrong, ->real_parent could be freed/reused.
    
    Both ->parent/real_parent point to nothing after __exit_signal() because
    we remove the child from ->children list, and thus the child can't be
    reparented when its parent exits.
    
    rcu_read_lock() protects ->parent/real_parent, but _only_ if we know it was
    valid before we take rcu lock.
    
    Revert this part of the patch.
    Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    a98fdcef
array.c 13.7 KB