summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRui Miguel Silva <rui.silva@linaro.org>2015-05-20 14:53:33 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-07-10 09:45:38 -0700
commit0b5531419e0537db4b9f92e1c615bf76fc55d98b (patch)
tree1888f33029fd01a9aeb5155c212ebbe8faddcffb /drivers
parent29e0510c3692d319c977e09a7824780f91edda64 (diff)
usb: gadget: f_fs: fix check in read operation
commit 342f39a6c8d34d638a87b7d5f2156adc4db2585c upstream. when copying to iter the size can be different then the iov count, the check for full iov is wrong and make any read on request which is not the exactly size of iov to return -EFAULT. So, just check the success of the copy. Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/gadget/function/f_fs.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 175c9956cbe3..3e53df4ab1eb 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -845,7 +845,7 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
ret = ep->status;
if (io_data->read && ret > 0) {
ret = copy_to_iter(data, ret, &io_data->data);
- if (unlikely(iov_iter_count(&io_data->data)))
+ if (!ret)
ret = -EFAULT;
}
}