USB: disable reset-resume when USB_QUIRK_RESET is set
authorAlan Stern <stern@rowland.harvard.edu>
Tue, 18 Mar 2014 14:39:05 +0000 (10:39 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Mar 2014 21:00:32 +0000 (14:00 -0700)
commit1d10255c1c496557a5674e651c4ebbe0f61279f2
tree7d65e464bc4ba39240f124111c8c4d30dd7e76e8
parent6aec044cc2f5670cf3b143c151c8be846499bd15
USB: disable reset-resume when USB_QUIRK_RESET is set

The USB_QUIRK_RESET flag indicates that a USB device changes its
identity in some way when it is reset.  It may lose its firmware, its
descriptors may change, or it may switch back to a default mode of
operation.

If a device does this, the kernel needs to avoid resetting it.  Resets
are likely to fail, or worse, succeed while changing the device's
state in a way the system can't detect.

This means we should disable the reset-resume mechanism whenever this
quirk flag is present.  An attempted reset-resume will fail, the
device will be logically disconnected, and later on the hub driver
will rediscover and re-enumerate the device.  This will cause the
appropriate udev events to be generated, so that userspace will have a
chance to switch the device into its normal operating mode, if
necessary.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Oliver Neukum <oliver@neukum.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/hub.c