summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Gutman <aicommander@gmail.com>2017-09-12 11:27:44 -0700
committerBen Hutchings <ben@decadent.org.uk>2017-11-26 13:50:36 +0000
commit253a96943c00e781d8706e6fc7897c1491f00c09 (patch)
tree44b3e9298f802c70c2255a5a408e413d27dc2136
parent24aa11bc563162f37ad2fe76fdfb324626b5ad01 (diff)
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: Ben Hutchings <ben@decadent.org.uk>
-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 11065754ed32..b76334b5bf83 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -1123,10 +1123,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) {