linux/drivers/usb/gadget
David Brownell e50ae572b3 USB: gadget: cdc-acm deadlock fix
This fixes a deadlock appearing with some USB peripheral drivers
when running CDC ACM gadget code.

The newish (2.6.27) CDC ACM event notification mechanism sends
messages (IN to the host) which are short enough to fit in most
FIFOs.  That means that with some peripheral controller drivers
(evidently not the ones used to verify the notification code!!)
the completion callback can be issued before queue() returns.

The deadlock would come because the completion callback and the
event-issuing code shared a spinlock.  Fix is trivial:  drop
that lock while queueing the message.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-11-13 14:45:06 -08:00
..
amd5536udc.c removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
amd5536udc.h USB: amd5536 UDC driver (in GEODE southbridge) 2007-07-19 17:46:05 -07:00
at91_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
at91_udc.h Rename WARN() to WARNING() to clear the namespace 2008-07-25 10:53:29 -07:00
atmel_usba_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
atmel_usba_udc.h atmel_usba_udc: Add support for AT91CAP9 UDPHS 2008-04-06 17:25:06 -04:00
cdc2.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
composite.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
config.c usb/gadget: fix kernel-doc warning 2008-10-22 10:05:28 -07:00
dummy_hcd.c USB: gadget: dummy_hcd: implement set_wedge 2008-10-17 14:40:52 -07:00
epautoconf.c usb gadget: descriptor copying support 2008-07-21 15:16:00 -07:00
ether.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
f_acm.c USB: gadget: cdc-acm deadlock fix 2008-11-13 14:45:06 -08:00
f_ecm.c usb gadget: link fixes for network gadget 2008-10-16 09:24:47 -07:00
f_loopback.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
f_obex.c usb gadget: defer obex enumeration 2008-10-17 14:40:53 -07:00
f_rndis.c usb gadget: remove needless struct members 2008-08-13 17:32:57 -07:00
f_serial.c usb gadget: remove needless struct members 2008-08-13 17:32:57 -07:00
f_sourcesink.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
f_subset.c usb gadget: link fixes for network gadget 2008-10-16 09:24:47 -07:00
file_storage.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
fsl_qe_udc.c usb/fsl_qe_udc: clear data toggle on clear halt request 2008-10-17 14:41:08 -07:00
fsl_qe_udc.h usb/fsl_qe_udc: fix response to get status request 2008-10-17 14:41:08 -07:00
fsl_usb2_udc.c fsl_usb2_udc: Fix oops on probe failure. 2008-10-17 14:41:07 -07:00
fsl_usb2_udc.h fsl_usb2_udc: Fix some sparse warnings and remove redundant code. 2008-10-17 14:41:05 -07:00
g_zero.h usb gadget zero: split out loopback config 2008-07-21 15:16:03 -07:00
gadget_chips.h usb: add Freescale QE/CPM USB peripheral controller driver 2008-10-17 14:40:54 -07:00
gmidi.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
goku_udc.c Rename WARN() to WARNING() to clear the namespace 2008-07-25 10:53:29 -07:00
goku_udc.h Rename WARN() to WARNING() to clear the namespace 2008-07-25 10:53:29 -07:00
inode.c saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
Kconfig USB: omap_udc: sync with OMAP tree 2008-10-17 14:41:00 -07:00
lh7a40x_udc.c USB: usb dev_name() instead of dev->bus_id 2008-07-21 15:15:46 -07:00
lh7a40x_udc.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
m66592-udc.c USB: m66592-udc: Fix up dev_set_name() badness. 2008-07-30 09:41:46 -07:00
m66592-udc.h drivers/usb annotations and fixes 2008-04-28 10:03:31 -07:00
Makefile usb: add Freescale QE/CPM USB peripheral controller driver 2008-10-17 14:40:54 -07:00
ndis.h usb gadget: RNDIS cleanups 2008-07-21 15:16:10 -07:00
net2280.c USB: gadget: net2280: implement set_wedge 2008-10-17 14:40:52 -07:00
net2280.h USB: gadget: net2280: implement set_wedge 2008-10-17 14:40:52 -07:00
omap_udc.c USB: omap_udc: sync with OMAP tree 2008-10-17 14:41:00 -07:00
omap_udc.h Rename WARN() to WARNING() to clear the namespace 2008-07-25 10:53:29 -07:00
printer.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
pxa25x_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
pxa25x_udc.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
pxa27x_udc.c USB: Fix unneeded endpoint check in pxa27x_udc 2008-10-22 10:05:28 -07:00
pxa27x_udc.h [ARM] 5080/1: touch PSSR_OTGPH only on pxa27x in ohci-pxa27x and pxa27x_udc 2008-06-15 19:54:23 +01:00
rndis.c usb gadget: link fixes for network gadget 2008-10-16 09:24:47 -07:00
rndis.h usb gadget: RNDIS cleanups 2008-07-21 15:16:10 -07:00
s3c2410_udc.c USB: Fix debugfs_create_file's error checking method for usb/gadget/s3c2410_udc 2008-10-22 10:05:27 -07:00
s3c2410_udc.h USB Gadget driver for Samsung s3c2410 ARM SoC 2007-07-12 16:34:30 -07:00
serial.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
u_ether.c usb gadget: cdc ethernet notification bugfix 2008-10-17 14:41:01 -07:00
u_ether.h usb ethernet gadget: split RNDIS function 2008-07-21 15:16:15 -07:00
u_serial.c usb gadget: issue notifications from ACM function 2008-08-13 17:32:57 -07:00
u_serial.h usb gadget: cdc obex glue 2008-10-17 14:40:53 -07:00
usbstring.c usb: use get/put_unaligned_* helpers 2008-04-29 08:06:28 -07:00
zero.c usb gadget: link fixes for gadget zero 2008-10-16 09:24:46 -07:00