| From 342f39a6c8d34d638a87b7d5f2156adc4db2585c Mon Sep 17 00:00:00 2001 |
| From: Rui Miguel Silva <rui.silva@linaro.org> |
| Date: Wed, 20 May 2015 14:53:33 +0100 |
| Subject: usb: gadget: f_fs: fix check in read operation |
| |
| From: Rui Miguel Silva <rui.silva@linaro.org> |
| |
| 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> |
| |
| --- |
| drivers/usb/gadget/function/f_fs.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- 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 |
| 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; |
| } |
| } |