USB: UHCI: acquire spinlock before calling start_rh()
authorAlan Stern <stern@rowland.harvard.edu>
Wed, 9 Jun 2010 21:34:39 +0000 (17:34 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 10 Aug 2010 21:35:33 +0000 (14:35 -0700)
commitba297edde4dd7376832bafb23e032a40d5928b56
tree9ede30f81c45a29f10ad2170d787985a88da828c
parentc548795abe0d3520b74e18f23ca0a0d72deddab9
USB: UHCI: acquire spinlock before calling start_rh()

This patch (as1392) fixes a bug in uhci-hcd: The start_rh() routine is
supposed to be called with the private spinlock held.  If an IRQ comes
in at just the wrong time, the driver will think the controller has
died when in fact it simply hasn't start yet.

The patch also addresses some issues that may prevent an URB from
being unlinked after the controller has stopped.  This is an abnormal
occurrence (ordinarily the controller stops only when the entire bus
is suspended and hence there are no active URBs), so the pathways
haven't gotten much testing.  These two changes may be a little more
than is strictly necessary, but clearly they won't hurt.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/uhci-hcd.c
drivers/usb/host/uhci-q.c