diff options
author | Greg Kroah-Hartman | 2017-10-16 10:33:54 +0200 |
---|---|---|
committer | Greg Kroah-Hartman | 2017-10-16 10:33:54 +0200 |
commit | e4ed2b5370a2df2b1feeb970904d2f7761c241c9 (patch) | |
tree | 852b17dcc8ed1ca8f35771e8f06d660bdfc51804 /drivers/usb/misc/usbtest.c | |
parent | Merge 4.14-rc4 into usb-next (diff) | |
parent | Linux 4.14-rc5 (diff) | |
download | kernel-qcow2-linux-e4ed2b5370a2df2b1feeb970904d2f7761c241c9.tar.gz kernel-qcow2-linux-e4ed2b5370a2df2b1feeb970904d2f7761c241c9.tar.xz kernel-qcow2-linux-e4ed2b5370a2df2b1feeb970904d2f7761c241c9.zip |
Merge 4.14-rc5 into usb-next
We want the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/misc/usbtest.c')
-rw-r--r-- | drivers/usb/misc/usbtest.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index eee82ca55b7b..b3fc602b2e24 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c @@ -202,12 +202,13 @@ found: return tmp; } - if (in) { + if (in) dev->in_pipe = usb_rcvbulkpipe(udev, in->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); + if (out) dev->out_pipe = usb_sndbulkpipe(udev, out->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); - } + if (iso_in) { dev->iso_in = &iso_in->desc; dev->in_iso_pipe = usb_rcvisocpipe(udev, @@ -1964,6 +1965,9 @@ test_queue(struct usbtest_dev *dev, struct usbtest_param_32 *param, int status = 0; struct urb *urbs[param->sglen]; + if (!param->sglen || param->iterations > UINT_MAX / param->sglen) + return -EINVAL; + memset(&context, 0, sizeof(context)); context.count = param->iterations * param->sglen; context.dev = dev; @@ -2087,6 +2091,8 @@ usbtest_do_ioctl(struct usb_interface *intf, struct usbtest_param_32 *param) if (param->iterations <= 0) return -EINVAL; + if (param->sglen > MAX_SGLEN) + return -EINVAL; /* * Just a bunch of test cases that every HCD is expected to handle. * |