diff options
author | Anton Vorontsov <avorontsov@ru.mvista.com> | 2008-12-25 15:15:05 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-02-09 20:19:46 +0100 |
commit | a30551db66afa1b53a4fa7ceadddb7122bdcf491 (patch) | |
tree | bbd4f0468a7417067bf7ebb5001368b01f8c7e90 /drivers/usb/gadget/s3c2410_udc.h | |
parent | USB: fsl_qe_udc: Fix oops on QE UDC probe failure (diff) | |
download | linux-a30551db66afa1b53a4fa7ceadddb7122bdcf491.tar.xz linux-a30551db66afa1b53a4fa7ceadddb7122bdcf491.zip |
USB: fsl_qe_udc: Fix recursive locking bug in ch9getstatus()
The call chain is this:
qe_udc_irq() <- grabs the udc->lock spinlock
rx_irq()
qe_ep0_rx()
ep0_setup_handle()
setup_received_handle()
ch9getstatus()
qe_ep_queue() <- tries to grab the udc->lock again
It seems unsafe to temporarily drop the lock in the ch9getstatus(),
so to fix that bug the lock-less __qe_ep_queue() function
implemented and used by the ch9getstatus().
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget/s3c2410_udc.h')
0 files changed, 0 insertions, 0 deletions