diff options
| author | Miklos Szeredi <mszeredi@redhat.com> | 2023-06-07 17:49:20 +0200 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2023-07-27 08:46:54 +0200 |
| commit | 6ba7ac692a25354c4a43b32fd941f778d5b01bf8 (patch) | |
| tree | f25444d930b50c25b18f344105a88320a0f90fb7 /fs/fuse | |
| parent | c9060caab4135dd660c4676d1ea33a6e0d3fc09d (diff) | |
| download | linux-6ba7ac692a25354c4a43b32fd941f778d5b01bf8.tar.gz linux-6ba7ac692a25354c4a43b32fd941f778d5b01bf8.tar.bz2 linux-6ba7ac692a25354c4a43b32fd941f778d5b01bf8.zip | |
fuse: revalidate: don't invalidate if interrupted
commit a9d1c4c6df0e568207907c04aed9e7beb1294c42 upstream.
If the LOOKUP request triggered from fuse_dentry_revalidate() is
interrupted, then the dentry will be invalidated, possibly resulting in
submounts being unmounted.
Reported-by: Xu Rongbo <xurongbo@baidu.com>
Closes: https://lore.kernel.org/all/CAJfpegswN_CJJ6C3RZiaK6rpFmNyWmXfaEpnQUJ42KCwNF5tWw@mail.gmail.com/
Fixes: 9e6268db496a ("[PATCH] FUSE - read-write operations")
Cc: <stable@vger.kernel.org>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/fuse')
| -rw-r--r-- | fs/fuse/dir.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 1abbdd78389a..4ea52906ae15 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -249,7 +249,7 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags) spin_unlock(&fi->lock); } kfree(forget); - if (ret == -ENOMEM) + if (ret == -ENOMEM || ret == -EINTR) goto out; if (ret || fuse_invalid_attr(&outarg.attr) || fuse_stale_inode(inode, outarg.generation, &outarg.attr)) |
