summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorCameron Gutman <aicommander@gmail.com>2017-09-12 21:27:44 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-09-27 15:43:11 +0300
commitbe000b5d60d24b7613ad53e2c51e0fd06abfe897 (patch)
tree0a4527d02518e4c3b71d1bc098b9ccd5edf0c624 /drivers
parent27d720a564aafa22ed485c8b6e9d36a3b9a08e23 (diff)
downloadlinux-be000b5d60d24b7613ad53e2c51e0fd06abfe897.tar.xz
Input: xpad - validate USB endpoint type during probe
commit 122d6a347329818419b032c5a1776e6b3866d9b9 upstream. We should only see devices with interrupt endpoints. Ignore any other endpoints that we find, so we don't send try to send them interrupt URBs and trigger a WARN down in the USB stack. Reported-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Andrey Konovalov <andreyknvl@google.com> Signed-off-by: Cameron Gutman <aicommander@gmail.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/joystick/xpad.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index ca0e19ae7a90..f6d0c8f51613 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -1764,10 +1764,12 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
struct usb_endpoint_descriptor *ep =
&intf->cur_altsetting->endpoint[i].desc;
- if (usb_endpoint_dir_in(ep))
- ep_irq_in = ep;
- else
- ep_irq_out = ep;
+ if (usb_endpoint_xfer_int(ep)) {
+ if (usb_endpoint_dir_in(ep))
+ ep_irq_in = ep;
+ else
+ ep_irq_out = ep;
+ }
}
if (!ep_irq_in || !ep_irq_out) {