kernel_optimize_test/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
at91_udc.c
at91_udc.h
atmel_usba_udc.c
atmel_usba_udc.h
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
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
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
goku_udc.h
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
lh7a40x_udc.h
m66592-udc.c
m66592-udc.h
Makefile usb: add Freescale QE/CPM USB peripheral controller driver 2008-10-17 14:40:54 -07:00
ndis.h
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
printer.c usb gadget: USB_GADGET_VBUS_DRAW Kconfig option 2008-10-17 14:40:58 -07:00
pxa25x_udc.c
pxa25x_udc.h
pxa27x_udc.c USB: Fix unneeded endpoint check in pxa27x_udc 2008-10-22 10:05:28 -07:00
pxa27x_udc.h
rndis.c usb gadget: link fixes for network gadget 2008-10-16 09:24:47 -07:00
rndis.h
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
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
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
zero.c usb gadget: link fixes for gadget zero 2008-10-16 09:24:46 -07:00