diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2013-10-01 16:41:22 +0200 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2013-10-01 16:41:22 +0200 |
commit | 3c70b8eeda596069258772afabf2ab0b1aa017f0 (patch) | |
tree | 961f03f916d1bfa70846ca003688e6c18ff33cc4 /fs/fuse/dir.c | |
parent | 0ab08f576b9e6a6b689fc6b4e632079b978e619b (diff) | |
download | linux-stable-3c70b8eeda596069258772afabf2ab0b1aa017f0.tar.gz linux-stable-3c70b8eeda596069258772afabf2ab0b1aa017f0.tar.bz2 linux-stable-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
Diffstat (limited to 'fs/fuse/dir.c')
-rw-r--r-- | fs/fuse/dir.c | 3 |
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; } |