• Oleg Nesterov's avatar
    proc: don't (ab)use ->group_leader in proc_task_readdir() paths · d855a4b7
    Oleg Nesterov authored
    proc_task_readdir() does not really need "leader", first_tid() has to
    revalidate it anyway.  Just pass proc_pid(inode) to first_tid() instead,
    it can do pid_task(PIDTYPE_PID) itself and read ->group_leader only if
    necessary.
    
    The patch also extracts the "inode is dead" code from
    pid_delete_dentry(dentry) into the new trivial helper,
    proc_inode_is_dead(inode), proc_task_readdir() uses it to return -ENOENT
    if this dir was removed.
    
    This is a bit racy, but the race is very inlikely and the getdents() after
    openndir() can see the empty "." + ".." dir only once.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Sameer Nanda <snanda@chromium.org>
    Cc: Sergey Dyasly <dserrg@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    d855a4b7
base.c 75.9 KB