mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
UPSTREAM: usb: raw-gadget: fix return value of ep read ioctls
They must return the number of bytes transferred during the data stage.
Fixes: 068fbff4f860 ("usb: raw-gadget: Fix copy_to/from_user() checks")
Fixes: f2c2e717642c ("usb: gadget: add raw-gadget interface")
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
Bug: 147413187
(cherry picked from commit 6e507644209b4a043363e165855a3a3050c4d40e)
Change-Id: I16f2ab1d881a2313bd1ec6b77aa0229fe08fe25b
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
This commit is contained in:
parent
30d554f1ba
commit
bbe8b95725
1 changed files with 6 additions and 2 deletions
|
|
@ -669,12 +669,14 @@ static int raw_ioctl_ep0_read(struct raw_dev *dev, unsigned long value)
|
|||
if (IS_ERR(data))
|
||||
return PTR_ERR(data);
|
||||
ret = raw_process_ep0_io(dev, &io, data, false);
|
||||
if (ret)
|
||||
if (ret < 0)
|
||||
goto free;
|
||||
|
||||
length = min(io.length, (unsigned int)ret);
|
||||
if (copy_to_user((void __user *)(value + sizeof(io)), data, length))
|
||||
ret = -EFAULT;
|
||||
else
|
||||
ret = length;
|
||||
free:
|
||||
kfree(data);
|
||||
return ret;
|
||||
|
|
@ -964,12 +966,14 @@ static int raw_ioctl_ep_read(struct raw_dev *dev, unsigned long value)
|
|||
if (IS_ERR(data))
|
||||
return PTR_ERR(data);
|
||||
ret = raw_process_ep_io(dev, &io, data, false);
|
||||
if (ret)
|
||||
if (ret < 0)
|
||||
goto free;
|
||||
|
||||
length = min(io.length, (unsigned int)ret);
|
||||
if (copy_to_user((void __user *)(value + sizeof(io)), data, length))
|
||||
ret = -EFAULT;
|
||||
else
|
||||
ret = length;
|
||||
free:
|
||||
kfree(data);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in a new issue