summaryrefslogtreecommitdiff
path: root/fs/fuse/dev.c
diff options
context:
space:
mode:
authorWolfram Sang <wsa@the-dreams.de>2020-03-26 14:09:58 +0300
committerWolfram Sang <wsa@the-dreams.de>2020-03-26 14:09:58 +0300
commit6d7e0a34206d4a5d0c619c0608eae57f4c557064 (patch)
tree8024562a9ba37065989414731f5132b3dcc67012 /fs/fuse/dev.c
parent90224e6468e15d5eb22a10ae1849cf8ca2e7360a (diff)
parent16fbf79b0f83bc752cee8589279f1ebfe57b3b6e (diff)
downloadlinux-6d7e0a34206d4a5d0c619c0608eae57f4c557064.tar.xz
Merge tag 'v5.6-rc7' into i2c/for-5.7
Linux 5.6-rc7
Diffstat (limited to 'fs/fuse/dev.c')
-rw-r--r--fs/fuse/dev.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index 8e02d76fe104..97eec7522bf2 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -276,12 +276,10 @@ static void flush_bg_queue(struct fuse_conn *fc)
void fuse_request_end(struct fuse_conn *fc, struct fuse_req *req)
{
struct fuse_iqueue *fiq = &fc->iq;
- bool async;
if (test_and_set_bit(FR_FINISHED, &req->flags))
goto put_request;
- async = req->args->end;
/*
* test_and_set_bit() implies smp_mb() between bit
* changing and below intr_entry check. Pairs with
@@ -324,7 +322,7 @@ void fuse_request_end(struct fuse_conn *fc, struct fuse_req *req)
wake_up(&req->waitq);
}
- if (async)
+ if (test_bit(FR_ASYNC, &req->flags))
req->args->end(fc, req->args, req->out.h.error);
put_request:
fuse_put_request(fc, req);
@@ -471,6 +469,8 @@ static void fuse_args_to_req(struct fuse_req *req, struct fuse_args *args)
req->in.h.opcode = args->opcode;
req->in.h.nodeid = args->nodeid;
req->args = args;
+ if (args->end)
+ __set_bit(FR_ASYNC, &req->flags);
}
ssize_t fuse_simple_request(struct fuse_conn *fc, struct fuse_args *args)