lkml.org 
[lkml]   [2008]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectUSB: new quirk flag to avoid Set-Interface
    -stable review patch.  If anyone has any objections, please let us know.
    ---------------------

    From: Alan Stern <stern@rowland.harvard.edu>

    upstream commit: 392e1d9817d0024c96aae237c3c4349e47c976fd

    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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    [chrisw@sous-sol.org: backport to 2.6.24.4]
    Signed-off-by: Chris Wright <chrisw@sous-sol.org>
    ---
    drivers/usb/core/message.c | 5 ++++-
    drivers/usb/core/quirks.c | 3 +++
    include/linux/usb/quirks.h | 3 +++
    3 files changed, 10 insertions(+), 1 deletion(-)

    --- a/drivers/usb/core/message.c
    +++ b/drivers/usb/core/message.c
    @@ -1189,7 +1189,10 @@ int usb_set_interface(struct usb_device
    return -EINVAL;
    }

    - ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
    + if (dev->quirks & USB_QUIRK_NO_SET_INTF)
    + ret = -EPIPE;
    + else
    + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
    USB_REQ_SET_INTERFACE, USB_RECIP_INTERFACE,
    alternate, interface, NULL, 0, 5000);

    --- a/drivers/usb/core/quirks.c
    +++ b/drivers/usb/core/quirks.c
    @@ -39,6 +39,9 @@ static const struct usb_device_id usb_qu
    /* M-Systems Flash Disk Pioneers */
    { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },

    + /* X-Rite/Gretag-Macbeth Eye-One Pro display colorimeter */
    + { USB_DEVICE(0x0971, 0x2000), .driver_info = USB_QUIRK_NO_SET_INTF },
    +
    /* Philips PSC805 audio device */
    { USB_DEVICE(0x0471, 0x0155), .driver_info = USB_QUIRK_RESET_RESUME },

    --- a/include/linux/usb/quirks.h
    +++ b/include/linux/usb/quirks.h
    @@ -9,3 +9,6 @@

    /* device can't resume correctly so reset it instead */
    #define USB_QUIRK_RESET_RESUME 0x00000002
    +
    +/* device can't handle Set-Interface requests */
    +#define USB_QUIRK_NO_SET_INTF 0x00000004
    --


    \
     
     \ /
      Last update: 2008-04-17 03:11    [W:0.021 / U:1.352 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site