• Eric W. Biederman's avatar
    [PATCH] proc: Close the race of a process dying durning lookup · cd6a3ce9
    Eric W. Biederman authored
    proc_lookup and task exiting are not synchronized, although some of the
    previous code may have suggested that.  Every time before we reuse a dentry
    namei.c calls d_op->derevalidate which prevents us from reusing a stale dcache
    entry.  Unfortunately it does not prevent us from returning a stale dcache
    entry.  This race has been explicitly plugged in proc_pid_lookup but there is
    nothing to confine it to just that proc lookup function.
    
    So to prevent the race I call revalidate explictily in all of the proc lookup
    functions after I call d_add, and report an error if the revalidate does not
    succeed.
    
    Years ago Al Viro did something similar but those changes got lost in the
    churn.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    cd6a3ce9
base.c 53 KB