• Eric W. Biederman's avatar
    dcache: Reduce the scope of i_lock in d_splice_alias · a03e283b
    Eric W. Biederman authored
    i_lock is only needed until __d_find_any_alias calls dget on the alias
    dentry.  After that the reference to new ensures that dentry_kill and
    d_delete will not remove the inode from the dentry, and remove the
    dentry from the inode->d_entry list.
    
    The inode i_lock came to be held over the the __d_move calls in
    d_splice_alias through a series of introduction of locks with
    increasing smaller scope.  First it was the dcache_lock, then
    it was the dcache_inode_lock, and finally inode->i_lock.
    
    Furthermore inode->i_lock is not held over any other calls
    to d_move or __d_move so it can not provide any meaningful
    rename protection.
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    a03e283b
dcache.c 89.4 KB