diff options
author | Michael Hsu <mhsu@nvidia.com> | 2011-11-07 14:51:20 -0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:54 -0800 |
commit | 74492e93192504bd410b26a61ae73eb68492e7d0 (patch) | |
tree | 9d235c1f30010ddc66698717784e4e64b3718e7d | |
parent | 164b0c30949873f3465a06339afc4f7ec3900fc2 (diff) |
usb: cdc-acm: blocking non-real ACM device
Adding a new quirk tag to prevent ACM driver taking over the interfaces
of a device which is not a real ACM device.
Bug 860566
Reviewed-on: http://git-master/r/55303
(cherry picked from commit 354c48f813fad182d9ce2c2fcf404d89f75e46cf)
Change-Id: I951328549980cf0b284907ef8e216acf9b2a8c59
Reviewed-on: http://git-master/r/62776
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Rebase-Id: R8fbe1a32c92114407783f9745616ed8304676b49
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 6 | ||||
-rw-r--r-- | drivers/usb/class/cdc-acm.h | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index acd4285e87d4..f0ec26b4a797 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -865,6 +865,10 @@ static int acm_probe(struct usb_interface *intf, quirks = (unsigned long)id->driver_info; num_rx_buf = (quirks == SINGLE_RX_URB) ? 1 : ACM_NR; + /* not a real CDC ACM device */ + if (quirks == NOT_REAL_ACM) + return -ENODEV; + /* handle quirks deadly to normal probing*/ if (quirks == NO_UNION_NORMAL) { data_interface = usb_ifnum_to_if(usb_dev, 1); @@ -1556,7 +1560,7 @@ static const struct usb_device_id acm_ids[] = { /* Exclude XMM6260 boot rom (not running modem software yet) */ { USB_DEVICE(0x058b, 0x0041), - .driver_info = NOT_A_MODEM, + .driver_info = NOT_REAL_ACM, }, /* control interfaces without any protocol set */ diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h index ca7937f26e27..64365cc0e646 100644 --- a/drivers/usb/class/cdc-acm.h +++ b/drivers/usb/class/cdc-acm.h @@ -127,3 +127,4 @@ struct acm { #define NO_CAP_LINE 4 #define NOT_A_MODEM 8 #define NO_DATA_INTERFACE 16 +#define NOT_REAL_ACM 32 |