aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Miguel Silva <rui.silva@linaro.org>2015-05-18 11:02:07 -0400
committerFelipe Balbi <balbi@ti.com>2015-07-06 13:34:08 -0400
commit4088acf1e845aba35f30fb91dee10649edbd0e84 (patch)
tree08865a7c25ee6e9923f2a9544f50cb654ba6e127
parent8515bac01a983d277148e4fcc5f235bf603de577 (diff)
usb: gadget: f_fs: do not set cancel function on synchronous {read,write}
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>
-rw-r--r--drivers/usb/gadget/function/f_fs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 45b8c8b338df..6e7be91e6097 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -924,7 +924,8 @@ static ssize_t ffs_epfile_write_iter(struct kiocb *kiocb, struct iov_iter *from)
924 924
925 kiocb->private = p; 925 kiocb->private = p;
926 926
927 kiocb_set_cancel_fn(kiocb, ffs_aio_cancel); 927 if (p->aio)
928 kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
928 929
929 res = ffs_epfile_io(kiocb->ki_filp, p); 930 res = ffs_epfile_io(kiocb->ki_filp, p);
930 if (res == -EIOCBQUEUED) 931 if (res == -EIOCBQUEUED)
@@ -968,7 +969,8 @@ static ssize_t ffs_epfile_read_iter(struct kiocb *kiocb, struct iov_iter *to)
968 969
969 kiocb->private = p; 970 kiocb->private = p;
970 971
971 kiocb_set_cancel_fn(kiocb, ffs_aio_cancel); 972 if (p->aio)
973 kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
972 974
973 res = ffs_epfile_io(kiocb->ki_filp, p); 975 res = ffs_epfile_io(kiocb->ki_filp, p);
974 if (res == -EIOCBQUEUED) 976 if (res == -EIOCBQUEUED)