summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2008-01-28 09:50:12 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2008-02-01 14:34:46 -0800
commitde6f92b9ee00e9f841fb1a63d0bd60593ec55dbe (patch)
treefcd4403920eb1a29a515a5b59130ea61e6e9cffc
parent6ce4560a39f72e45a273c652ee116f8b0fc6386f (diff)
downloadlinux-stable-de6f92b9ee00e9f841fb1a63d0bd60593ec55dbe.tar.gz
linux-stable-de6f92b9ee00e9f841fb1a63d0bd60593ec55dbe.tar.bz2
linux-stable-de6f92b9ee00e9f841fb1a63d0bd60593ec55dbe.zip
USB: handle idVendor of 0x0000
Some crazy devices in the wild have a vendor id of 0x0000. If we try to add a module alias with this id, we just can't do it due to a check in the file2alias.c file. Change the test to verify that both the vendor and product ids are 0x0000 to show a real "blank" module alias. Note, the module-init-tools package also needs to be changed to properly generate the depmod tables. Cc: Janusz <janumix@poczta.fm> Cc: stable <stable@kernel.org> Cc: Jon Masters <jcm@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/core/driver.c4
-rw-r--r--scripts/mod/file2alias.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index 7c3aaa9c5402..96d3f852f4ad 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -534,8 +534,8 @@ const struct usb_device_id *usb_match_id(struct usb_interface *interface,
id->driver_info is the way to create an entry that
indicates that the driver want to examine every
device and interface. */
- for (; id->idVendor || id->bDeviceClass || id->bInterfaceClass ||
- id->driver_info; id++) {
+ for (; id->idVendor || id->idProduct || id->bDeviceClass ||
+ id->bInterfaceClass || id->driver_info; id++) {
if (usb_match_one_id(interface, id))
return id;
}
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index d802b5afae89..9ddf944cce29 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -155,7 +155,7 @@ static void do_usb_entry_multi(struct usb_device_id *id, struct module *mod)
* Some modules (visor) have empty slots as placeholder for
* run-time specification that results in catch-all alias
*/
- if (!(id->idVendor | id->bDeviceClass | id->bInterfaceClass))
+ if (!(id->idVendor | id->idProduct | id->bDeviceClass | id->bInterfaceClass))
return;
/* Convert numeric bcdDevice range into fnmatch-able pattern(s) */