summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorWolfram Sang <wsa@the-dreams.de>2014-01-13 11:29:23 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-01-14 00:54:03 +0100
commit1b9fb31f7db7882d475bdc8b335403e8eaabf1ef (patch)
treebac2c09511d7807b5df8a7dca8951d04e8445e71 /drivers/usb
parentusb: cdc-wdm: resp_count can be 0 even if WDM_READ is set (diff)
downloadlinux-1b9fb31f7db7882d475bdc8b335403e8eaabf1ef.tar.xz
linux-1b9fb31f7db7882d475bdc8b335403e8eaabf1ef.zip
usb: core: check for valid id_table when using the RefId feature
When implementing the RefId feature, it was missed that id_tables can be NULL under special circumstances. Bail out in that case. Signed-off-by: Wolfram Sang <wsa@the-dreams.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/core/driver.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index 620a0baf103e..5d01558cef66 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -73,6 +73,9 @@ ssize_t usb_store_new_id(struct usb_dynids *dynids,
if (fields > 4) {
const struct usb_device_id *id = id_table;
+ if (!id)
+ return -ENODEV;
+
for (; id->match_flags; id++)
if (id->idVendor == refVendor && id->idProduct == refProduct)
break;