dcache: close d_move race in d_splice_alias
authorJ. Bruce Fields <bfields@redhat.com>
Mon, 17 Feb 2014 22:45:56 +0000 (17:45 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 7 Aug 2014 18:40:10 +0000 (14:40 -0400)
commit75a2352d0110960aeee1a28ddc09a55f97c99100
tree09df0569f40eb0a50a752575fa7991c62b98a76b
parent3f70bd51cb4405dc5cf8624292ffa474679fc9c7
dcache: close d_move race in d_splice_alias

d_splice_alias will d_move an IS_ROOT() directory dentry into place if
one exists.  This should be safe as long as the dentry remains IS_ROOT,
but I can't see what guarantees that: once we drop the i_lock all we
hold here is the i_mutex on an unrelated parent directory.

Instead copy the logic of d_materialise_unique.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/dcache.c