• Alan Stern's avatar
    usb-storage: fix bugs in the disconnect pathway · 2f67cd5b
    Alan Stern authored
    This patch (as961) fixes a couple of bugs in the disconnect pathway of
    usb-storage.
    
    The first problem, which apparently has been around for a while
    although nobody noticed it, shows up when an aborted command is still
    pending when a disconnect occurs.  The SCSI error-handler will
    continue to wait in command_abort() until the us->notify completion is
    signalled.  Thus quiesce_and_remove_host() needs to signal it.
    
    The second problem was introduced recently along with autosuspend
    support.  Since usb_stor_scan_thread() now calls
    usb_autopm_put_interface() before exiting, we can't simply leave the
    scanning thread running after a disconnect; we must wait until the
    thread exits.  This is solved by adding a new struct completion to the
    private data structure.  Fortuitously, it allows the removal of the
    rather clunky mechanism used in the past to insure that all threads
    have finished before the module is unloaded.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    2f67cd5b
usb.c 29.6 KB