usb: gadget: f_fs: do not set cancel function on synchronous {read,write}
authorRui Miguel Silva <rui.silva@linaro.org>
Mon, 18 May 2015 15:02:07 +0000 (16:02 +0100)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Tue, 22 Dec 2015 09:53:44 +0000 (10:53 +0100)
do not try to set cancel function in synchronous operations in
ffs_epfile_{read,write}_iter.

Cc: <stable@vger.kernel.org> # v4.0+
Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
[Backported from mainline commit
4088acf1e845aba35f30fb91dee10649edbd0e84]
Change-Id: Icd247a1b83a6b905be4aa54343ce979165f7e17d
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
drivers/usb/gadget/function/f_fs.c

index 175c9956cbe3a36949526029103d38b4c97225c3..cd560029b10651160c542fdd79815784825c3fdb 100644 (file)
@@ -923,7 +923,8 @@ static ssize_t ffs_epfile_write_iter(struct kiocb *kiocb, struct iov_iter *from)
 
        kiocb->private = p;
 
-       kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
+       if (p->aio)
+               kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
 
        res = ffs_epfile_io(kiocb->ki_filp, p);
        if (res == -EIOCBQUEUED)
@@ -967,7 +968,8 @@ static ssize_t ffs_epfile_read_iter(struct kiocb *kiocb, struct iov_iter *to)
 
        kiocb->private = p;
 
-       kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
+       if (p->aio)
+               kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
 
        res = ffs_epfile_io(kiocb->ki_filp, p);
        if (res == -EIOCBQUEUED)