usb: ehci: fix deadlock when threadirqs option is used
authorStanislaw Gruszka <sgruszka@redhat.com>
Wed, 19 Feb 2014 09:29:01 +0000 (10:29 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 1 Apr 2014 23:58:56 +0000 (00:58 +0100)
commit0986dc71fb09d9916d5579c8c5e2f2c8099337d0
tree4de1385ed52ca05643122ff57279d57f51ae6ecc
parent05e327077e173bb8128d18cee8105b5d19d02ea3
usb: ehci: fix deadlock when threadirqs option is used

commit a1227f3c1030e96ebc51d677d2f636268845c5fb upstream.

ehci_irq() and ehci_hrtimer_func() can deadlock on ehci->lock when
threadirqs option is used. To prevent the deadlock use
spin_lock_irqsave() in ehci_irq().

This change can be reverted when hrtimer callbacks become threaded.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/usb/host/ehci-hcd.c