summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2013-10-01 16:41:22 +0200
committerMiklos Szeredi <mszeredi@suse.cz>2013-10-01 16:41:22 +0200
commit3c70b8eeda596069258772afabf2ab0b1aa017f0 (patch)
tree961f03f916d1bfa70846ca003688e6c18ff33cc4
parent0ab08f576b9e6a6b689fc6b4e632079b978e619b (diff)
downloadlinux-3c70b8eeda596069258772afabf2ab0b1aa017f0.tar.gz
linux-3c70b8eeda596069258772afabf2ab0b1aa017f0.tar.bz2
linux-3c70b8eeda596069258772afabf2ab0b1aa017f0.zip
fuse: don't check_submounts_and_drop() in RCU walk
If revalidate finds an invalid dentry in RCU walk mode, let the VFS deal with it instead of calling check_submounts_and_drop() which is not prepared for being called from RCU walk. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Cc: stable@vger.kernel.org
-rw-r--r--fs/fuse/dir.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 62b43b577bfc..9b16806f11da 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -259,7 +259,8 @@ out:
invalid:
ret = 0;
- if (check_submounts_and_drop(entry) != 0)
+
+ if (!(flags & LOOKUP_RCU) && check_submounts_and_drop(entry) != 0)
ret = 1;
goto out;
}