[RHEL7,COMMIT] fs/fuse: re-init req->list for interrupted release

Submitted by Konstantin Khorenko on June 20, 2018, 8:47 a.m.


Message ID 201806200847.w5K8lDoh017149@finist_ce7.work
State New
Series "fs/fuse: re-init req->list for interrupted release"
Headers show

Commit Message

Konstantin Khorenko June 20, 2018, 8:47 a.m.
The commit is pushed to "branch-rh7-3.10.0-693.21.1.vz7.50.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-693.21.1.vz7.50.14
commit e507d6340ff034b030be9bbec0c423caff6b3b18
Author: Pavel Butsykin <pbutsykin@virtuozzo.com>
Date:   Wed Jun 20 11:47:13 2018 +0300

    fs/fuse: re-init req->list for interrupted release
    This is fix-up for commit c726a5807e00309b2fb386be0030fe154f332829.
    If we want to reuse request, we need to reinitialize it. For reserved request
    this is usually done by calling put_reserved_req(). This patch adds re-init of
    req->list before re-sending interrupted release.
    Fixes: c726a5807e00 ("fuse: resend interrupted release")
    Signed-off-by: Pavel Butsykin <pbutsykin@virtuozzo.com>
    Reviewed-by: Kirill Tkhai <ktkhai@virtuozzo.com>
 fs/fuse/file.c | 1 +
 1 file changed, 1 insertion(+)

Patch hide | download patch | download mbox

diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 8b2c36292d75..079f139a727f 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -164,6 +164,7 @@  static void fuse_file_put(struct fuse_file *ff, bool sync)
 			fuse_request_send(ff->fc, req);
 			if (req->out.h.error == -EINTR) {
 				__set_bit(FR_PENDING, &req->flags);
+				INIT_LIST_HEAD(&req->list);
 				req->out.h.error = 0;
 				goto async_fallback;