usb-host-libusb: Configuration 0 may be a valid configuration
Quoting from: linux/Documentation/ABI/stable/sysfs-bus-usb: Note that some devices, in violation of the USB spec, have a configuration with a value equal to 0. Writing 0 to bConfigurationValue for these devices will install that configuration, rather then unconfigure the device. So don't compare the configuration value against 0 to check for unconfigured devices, instead check for a LIBUSB_ERROR_NOT_FOUND return from libusb_get_active_config_descriptor(). Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
5af35d7fec
commit
1294ca797c
@ -992,15 +992,14 @@ static int usb_host_claim_interfaces(USBHostDevice *s, int configuration)
|
|||||||
udev->ninterfaces = 0;
|
udev->ninterfaces = 0;
|
||||||
udev->configuration = 0;
|
udev->configuration = 0;
|
||||||
|
|
||||||
if (configuration == 0) {
|
|
||||||
/* address state - ignore */
|
|
||||||
return USB_RET_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
usb_host_detach_kernel(s);
|
usb_host_detach_kernel(s);
|
||||||
|
|
||||||
rc = libusb_get_active_config_descriptor(s->dev, &conf);
|
rc = libusb_get_active_config_descriptor(s->dev, &conf);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
if (rc == LIBUSB_ERROR_NOT_FOUND) {
|
||||||
|
/* address state - ignore */
|
||||||
|
return USB_RET_SUCCESS;
|
||||||
|
}
|
||||||
return USB_RET_STALL;
|
return USB_RET_STALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user