[PATCH] fs: fuse: check return value of fuse_simple_request

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In `fs/fuse/file.c` `fuse_simple_request` is used in multiple places,
with its return value properly checked for possible errors.

However the usage on `fuse_file_put` ignores its return value. And the
following `fuse_release_end` call used hard-coded error value of `0`.

This triggers a warning in static analyzers and such.

I've added a variable to capture `fuse_simple_request` result and passed
that to `fuse_release_end` instead.

Signed-off-by: Cengiz Can <cengiz@xxxxxxxxxx>
---
 fs/fuse/file.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index a63d779eac10..9914ee2af311 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -110,6 +110,7 @@ static void fuse_release_end(struct fuse_conn *fc, struct fuse_args *args,

 static void fuse_file_put(struct fuse_file *ff, bool sync, bool isdir)
 {
+	int err;
 	if (refcount_dec_and_test(&ff->count)) {
 		struct fuse_args *args = &ff->release_args->args;

@@ -117,8 +118,8 @@ static void fuse_file_put(struct fuse_file *ff, bool sync, bool isdir)
 			/* Do nothing when client does not implement 'open' */
 			fuse_release_end(ff->fc, args, 0);
 		} else if (sync) {
-			fuse_simple_request(ff->fc, args);
-			fuse_release_end(ff->fc, args, 0);
+			err = fuse_simple_request(ff->fc, args);
+			fuse_release_end(ff->fc, args, err);
 		} else {
 			args->end = fuse_release_end;
 			if (fuse_simple_background(ff->fc, args,
--
2.25.0




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux