USB: xhci: Handle canceled URBs when HC dies.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Tue, 29 Sep 2009 00:21:37 +0000 (17:21 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Oct 2009 20:52:06 +0000 (13:52 -0700)
commite34b2fbf28741310d1d59a217d34e050ce7867e8
tree849303efcb6905a4070ce8aed5c337d42a255196
parente4ab05df573834b8c70d19db426b7d6286782c1d
USB: xhci: Handle canceled URBs when HC dies.

When the host controller dies (e.g. it is removed from a PCI card slot),
the xHCI driver cannot expect commands to complete.  The buggy code this
patch fixes would mark an URB as canceled and then expect the URB to be
completed when the stop endpoint command completed.  That would never
happen if the host controller was dead, so the USB core would just hang in
the disconnect code.

If the host controller died, and the driver asks to cancel an URB, free
any structures associated with that URB and immediately give it back.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci-hcd.c