Commit 392e1d9817d0024c96aae237c3c4349e47c976fd

Authored by Alan Stern
Committed by Greg Kroah-Hartman
1 parent 12cd5b984f

USB: new quirk flag to avoid Set-Interface

This patch (as1057) fixes a problem with the X-Rite/Gretag-Macbeth
Eye-One Pro display colorimeter; the device crashes when it receives a
Set-Interface request.  A new quirk (USB_QUIRK_NO_SET_INTF) is
introduced and a quirks entry is created for this device.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Showing 3 changed files with 10 additions and 1 deletions Side-by-side Diff

drivers/usb/core/message.c
... ... @@ -1206,7 +1206,10 @@
1206 1206 return -EINVAL;
1207 1207 }
1208 1208  
1209   - ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  1209 + if (dev->quirks & USB_QUIRK_NO_SET_INTF)
  1210 + ret = -EPIPE;
  1211 + else
  1212 + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1210 1213 USB_REQ_SET_INTERFACE, USB_RECIP_INTERFACE,
1211 1214 alternate, interface, NULL, 0, 5000);
1212 1215  
drivers/usb/core/quirks.c
... ... @@ -50,6 +50,9 @@
50 50 /* M-Systems Flash Disk Pioneers */
51 51 { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
52 52  
  53 + /* X-Rite/Gretag-Macbeth Eye-One Pro display colorimeter */
  54 + { USB_DEVICE(0x0971, 0x2000), .driver_info = USB_QUIRK_NO_SET_INTF },
  55 +
53 56 /* Action Semiconductor flash disk */
54 57 { USB_DEVICE(0x10d6, 0x2200), .driver_info =
55 58 USB_QUIRK_STRING_FETCH_255 },
include/linux/usb/quirks.h
... ... @@ -9,4 +9,7 @@
9 9  
10 10 /* device can't resume correctly so reset it instead */
11 11 #define USB_QUIRK_RESET_RESUME 0x00000002
  12 +
  13 +/* device can't handle Set-Interface requests */
  14 +#define USB_QUIRK_NO_SET_INTF 0x00000004