diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2015-08-15 20:36:41 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-08-21 08:34:37 +0200 |
commit | a03e283bf5c3d4851b4998122196ce9f849e6dfb (patch) | |
tree | 993a15c5162722fa702a490540e8ee374cead082 /fs/compat_ioctl.c | |
parent | dcache: Handle escaped paths in prepend_path (diff) | |
download | linux-a03e283bf5c3d4851b4998122196ce9f849e6dfb.tar.xz linux-a03e283bf5c3d4851b4998122196ce9f849e6dfb.zip |
dcache: Reduce the scope of i_lock in d_splice_alias
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: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/compat_ioctl.c')
0 files changed, 0 insertions, 0 deletions