Skip to content

Commit 184eead

Browse files
AlanSterngregkh
authored andcommitted
USB: core: Fix regression in Hercules audio card
Commit 3e4f8e2 ("USB: core: fix check for duplicate endpoints") aimed to make the USB stack more reliable by detecting and skipping over endpoints that are duplicated between interfaces. This caused a regression for a Hercules audio card (reported as Bugzilla #208357), which contains such non-compliant duplications. Although the duplications are harmless, skipping the valid endpoints prevented the device from working. This patch fixes the regression by adding ENDPOINT_IGNORE quirks for the Hercules card, telling the kernel to ignore the invalid duplicate endpoints and thereby allowing the valid endpoints to be used as intended. Fixes: 3e4f8e2 ("USB: core: fix check for duplicate endpoints") CC: <stable@vger.kernel.org> Reported-by: Alexander Chalikiopoulos <bugzilla.kernel.org@mrtoasted.com> Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Link: https://lore.kernel.org/r/20201119170040.GA576844@rowland.harvard.edu Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 87bed3d commit 184eead

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

drivers/usb/core/quirks.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,10 @@ static const struct usb_device_id usb_quirk_list[] = {
348348
/* Guillemot Webcam Hercules Dualpix Exchange*/
349349
{ USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME },
350350

351+
/* Guillemot Hercules DJ Console audio card (BZ 208357) */
352+
{ USB_DEVICE(0x06f8, 0xb000), .driver_info =
353+
USB_QUIRK_ENDPOINT_IGNORE },
354+
351355
/* Midiman M-Audio Keystation 88es */
352356
{ USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME },
353357

@@ -525,6 +529,8 @@ static const struct usb_device_id usb_amd_resume_quirk_list[] = {
525529
* Matched for devices with USB_QUIRK_ENDPOINT_IGNORE.
526530
*/
527531
static const struct usb_device_id usb_endpoint_ignore[] = {
532+
{ USB_DEVICE_INTERFACE_NUMBER(0x06f8, 0xb000, 5), .driver_info = 0x01 },
533+
{ USB_DEVICE_INTERFACE_NUMBER(0x06f8, 0xb000, 5), .driver_info = 0x81 },
528534
{ USB_DEVICE_INTERFACE_NUMBER(0x0926, 0x0202, 1), .driver_info = 0x85 },
529535
{ USB_DEVICE_INTERFACE_NUMBER(0x0926, 0x0208, 1), .driver_info = 0x85 },
530536
{ }

0 commit comments

Comments
 (0)