diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/core/message.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index a26a7292b61a..025ac0bd3534 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c | |||
@@ -1483,6 +1483,9 @@ static struct usb_interface_assoc_descriptor *find_iad(struct usb_device *dev, | |||
1483 | * channels are available independently; and choosing between open | 1483 | * channels are available independently; and choosing between open |
1484 | * standard device protocols (like CDC) or proprietary ones. | 1484 | * standard device protocols (like CDC) or proprietary ones. |
1485 | * | 1485 | * |
1486 | * Note that a non-authorized device (dev->authorized == 0) will only | ||
1487 | * be put in unconfigured mode. | ||
1488 | * | ||
1486 | * Note that USB has an additional level of device configurability, | 1489 | * Note that USB has an additional level of device configurability, |
1487 | * associated with interfaces. That configurability is accessed using | 1490 | * associated with interfaces. That configurability is accessed using |
1488 | * usb_set_interface(). | 1491 | * usb_set_interface(). |
@@ -1504,7 +1507,7 @@ int usb_set_configuration(struct usb_device *dev, int configuration) | |||
1504 | struct usb_interface **new_interfaces = NULL; | 1507 | struct usb_interface **new_interfaces = NULL; |
1505 | int n, nintf; | 1508 | int n, nintf; |
1506 | 1509 | ||
1507 | if (configuration == -1) | 1510 | if (dev->authorized == 0 || configuration == -1) |
1508 | configuration = 0; | 1511 | configuration = 0; |
1509 | else { | 1512 | else { |
1510 | for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { | 1513 | for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { |