]> git.baikalelectronics.ru Git - kernel.git/commit
nfs d_revalidate() is too trigger-happy with d_drop()
authorAl Viro <viro@ZenIV.linux.org.uk>
Thu, 29 Apr 2010 02:10:43 +0000 (03:10 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 29 Apr 2010 03:40:03 +0000 (20:40 -0700)
commitbb7c081f5f7bc5a7859fc10a7171bf4ff645b711
tree0ca15a8b9250337c810e18756422c17b5f651b08
parent62920b6c48068a9f404e6d4543314ad737c439ea
nfs d_revalidate() is too trigger-happy with d_drop()

If dentry found stale happens to be a root of disconnected tree, we
can't d_drop() it; its d_hash is actually part of s_anon and d_drop()
would simply hide it from shrink_dcache_for_umount(), leading to
all sorts of fun, including busy inodes on umount and oopsen after
that.

Bug had been there since at least 2006 (commit c636eb already has it),
so it's definitely -stable fodder.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/nfs/dir.c