• Sarah Sharp's avatar
    USB: Fix connected device switch to Inactive state. · d7930304
    Sarah Sharp authored
    [This is upstream commit d3b9d7a9.
    It needs to be backported to kernels as old as 3.2, because it fixes the
    buggy commit 65bdac5e "USB: Handle warm
    reset failure on empty port."]
    
    A USB 3.0 device can transition to the Inactive state if a U1 or U2 exit
    transition fails.  The current code in hub_events simply issues a warm
    reset, but does not call any pre-reset or post-reset driver methods (or
    unbind/rebind drivers without them).  Therefore the drivers won't know
    their device has just been reset.
    
    hub_events should instead call usb_reset_device.  This means
    hub_port_reset now needs to figure out whether it should issue a warm
    reset or a hot reset.
    
    Remove the FIXME note about needing disconnect() for a NOTATTACHED
    device.  This patch fixes that.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d7930304
hub.c 150 KB