diff options
author | Chad Austin <chadaustin@fb.com> | 2018-12-10 19:54:52 +0100 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2018-12-11 21:47:28 +0100 |
commit | 2e64ff154ce6ce9a8dc0f9556463916efa6ff460 (patch) | |
tree | 59b4c2e0a6f2cebd6130ac56cc921981b2f6ba92 /fs/fuse/fuse_i.h | |
parent | fuse: Fix memory leak in fuse_dev_free() (diff) | |
download | linux-2e64ff154ce6ce9a8dc0f9556463916efa6ff460.tar.xz linux-2e64ff154ce6ce9a8dc0f9556463916efa6ff460.zip |
fuse: continue to send FUSE_RELEASEDIR when FUSE_OPEN returns ENOSYS
When FUSE_OPEN returns ENOSYS, the no_open bit is set on the connection.
Because the FUSE_RELEASE and FUSE_RELEASEDIR paths share code, this
incorrectly caused the FUSE_RELEASEDIR request to be dropped and never sent
to userspace.
Pass an isdir bool to distinguish between FUSE_RELEASE and FUSE_RELEASEDIR
inside of fuse_file_put.
Fixes: 7678ac50615d ("fuse: support clients that don't implement 'open'")
Cc: <stable@vger.kernel.org> # v3.14
Signed-off-by: Chad Austin <chadaustin@fb.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to '')
-rw-r--r-- | fs/fuse/fuse_i.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index afe1f231c758..2f2c92e6f8cb 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -822,7 +822,7 @@ void fuse_sync_release(struct fuse_file *ff, int flags); /** * Send RELEASE or RELEASEDIR request */ -void fuse_release_common(struct file *file, int opcode); +void fuse_release_common(struct file *file, bool isdir); /** * Send FSYNC or FSYNCDIR request |