linux/drivers/usb/gadget
Vladimir Zapolskiy 00c05aabf2 USB: s3c2410_udc: be aware of connected gadget driver
To escape from data abort in interrupt handler, it is required to
check for a connected gadget before delivering control requests.

The change fixes the following panic, which occurs with no loaded
gadget driver and input USB_REQ_GET_DESCRIPTOR request:

Kernel panic - not syncing: Fatal exception in interrupt
[<c0025874>] (unwind_backtrace+0x0/0xd8) from [<c0253f14>] (panic+0x40/0x110)
[<c0253f14>] (panic+0x40/0x110) from [<c002470c>] (die+0x154/0x180)
[<c002470c>] (die+0x154/0x180) from [<c0026448>] (__do_kernel_fault+0x64/0x74)
[<c0026448>] (__do_kernel_fault+0x64/0x74) from [<c0026610>] (do_page_fault+0x1b8/0x1cc)
[<c0026610>] (do_page_fault+0x1b8/0x1cc) from [<c00202d4>] (do_DataAbort+0x34/0x94)
[<c00202d4>] (do_DataAbort+0x34/0x94) from [<c0020a60>] (__dabt_svc+0x40/0x60)
Exception stack(0xc0327ea8 to 0xc0327ef0)
7ea0:                   bf0026b0 c0327ef0 c0327ee4 00000000 bf002590 00000093
7ec0: 00000001 bf0026b0 bf002990 00000000 00000008 0000143d 00003f00 c0327ef0
7ee0: bf001364 bf001360 20000093 ffffffff
[<c0020a60>] (__dabt_svc+0x40/0x60) from [<bf001360>] (s3c2410_udc_irq+0x5b8/0x778 [s3c2410_udc])
[<bf001360>] (s3c2410_udc_irq+0x5b8/0x778 [s3c2410_udc]) from [<c0058aa0>] (handle_IRQ_event+0x3c/0x104)
[<c0058aa0>] (handle_IRQ_event+0x3c/0x104) from [<c005a428>] (handle_edge_irq+0x12c/0x164)
[<c005a428>] (handle_edge_irq+0x12c/0x164) from [<c0020068>] (asm_do_IRQ+0x68/0x88)
[<c0020068>] (asm_do_IRQ+0x68/0x88) from [<c0020aa4>] (__irq_svc+0x24/0xa0)

Signed-off-by: Vladimir Zapolskiy <vzapolskiy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-07-26 12:00:58 -07:00
..
amd5536udc.c usb: amd5536udc: fixed shared interrupt bug and warning oops 2009-11-30 16:43:15 -08:00
amd5536udc.h
at91_udc.c Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
at91_udc.h
atmel_usba_udc.c USB: gadget: Use kmemdup 2010-05-20 13:21:49 -07:00
atmel_usba_udc.h USB: atmel uaba: Adding invert vbus_pin 2010-03-02 14:54:57 -08:00
audio.c USB: audio gadget: free alsa devices when unloading 2009-12-23 11:34:20 -08:00
cdc2.c USB: replace uses of __constant_{endian} 2009-03-24 16:20:33 -07:00
ci13xxx_udc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ci13xxx_udc.h
composite.c USB: gadget: Allow function access to device ID data during bind() 2010-05-20 13:21:43 -07:00
config.c USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
dummy_hcd.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
epautoconf.c USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
ether.c USB: Correct CONFIG variable typo. 2010-03-02 14:53:40 -08:00
f_acm.c USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
f_audio.c usb/gadget: Replace the old USB audio FU definitions in f_audio.c 2010-06-01 07:42:03 +02:00
f_ecm.c USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
f_eem.c USB: gadget eth: Fix calculate CRC32 in EEM 2010-06-30 08:16:06 -07:00
f_fs.c Fix up trivial spelling errors ('taht' -> 'that') 2010-07-21 09:25:42 -07:00
f_hid.c USB: gadget: add HID gadget driver 2010-05-20 13:21:35 -07:00
f_loopback.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_mass_storage.c USB: gadget: f_mass_storage: stale common->fsg value bug fix 2010-06-30 08:16:07 -07:00
f_obex.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_phonet.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_rndis.c USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
f_serial.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_sourcesink.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_subset.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_uvc.c V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
f_uvc.h USB gadget: video class function driver 2010-05-20 13:21:41 -07:00
file_storage.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2010-03-04 08:15:33 -08:00
fsl_mxc_udc.c USB: mxc: gadget: remove 60mhz clock requirement for freescale mx51 usb core 2010-05-20 13:21:44 -07:00
fsl_qe_udc.c of/usb: fsl_qe_udc.c: fix build breakage 2010-06-02 21:02:40 -06:00
fsl_qe_udc.h powerpc/qe&cpm: Implement static inline stubs for non-QE/CPM builds 2009-11-11 21:43:20 -06:00
fsl_udc_core.c USB: mxc: gadget: Fix bitfield for calculating maximum packet size 2010-05-20 13:21:40 -07:00
fsl_usb2_udc.h USB: gadget: Add i.MX3x support to the fsl_usb2_udc driver 2009-06-15 21:44:47 -07:00
g_ffs.c USB: gadget: g_fs: possible invalid pointer reference bug fixed 2010-06-30 08:16:05 -07:00
g_zero.h USB: gadget: gadget zero uses new suspend/resume hooks 2009-03-24 16:20:45 -07:00
gadget_chips.h USB: gadget: add gadget controller number for s3c-hsotg driver 2010-03-19 07:24:22 -07:00
gmidi.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
goku_udc.c USB: goku_udc: remove potential null dereference 2010-03-19 07:24:19 -07:00
goku_udc.h
hid.c USB: g_hid: unregister platform driver on probe/usb_composite_register errors 2010-05-20 13:21:40 -07:00
imx_udc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
imx_udc.h USB: imx_udc: Fix IMX UDC gadget general irq handling 2009-03-24 16:20:29 -07:00
inode.c usb: gadgetfs: Convert semaphore to mutex 2010-03-02 14:54:52 -08:00
Kconfig USB: s3c_hsotg: define USB_GADGET_DUALSPEED in Kconfig 2010-06-04 13:16:19 -07:00
langwell_udc.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
langwell_udc.h USB: Add Intel Langwell USB Device Controller driver 2009-06-15 21:44:47 -07:00
lh7a40x_udc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
lh7a40x_udc.h
m66592-udc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
m66592-udc.h usb: gadget: m66592-udc pio to mmio accessor conversion. 2010-06-02 16:26:13 +09:00
Makefile USB: mxc: gadget: remove 60mhz clock requirement for freescale mx51 usb core 2010-05-20 13:21:44 -07:00
mass_storage.c USB: mass_storage: eject LUNs on thread exit 2010-03-02 14:54:49 -08:00
multi.c USB: gadget/multi: cdc_do_config: remove redundant check 2010-03-19 07:24:24 -07:00
ndis.h
net2280.c USB: replace uses of __constant_{endian} 2009-03-24 16:20:33 -07:00
net2280.h
nokia.c USB: gadget: introduce g_nokia gadget driver 2010-03-02 14:54:02 -08:00
omap_udc.c omap1: omap_udc: Add clocking and disable vbus sense for omap7xx 2009-11-22 10:24:32 -08:00
omap_udc.h
printer.c USB: gadget/printer, fix sleep inside atomic 2010-06-30 08:16:06 -07:00
pxa25x_udc.c [ARM] pxa: move board board IRQ definitions out of irqs.h 2010-03-02 07:40:51 +08:00
pxa25x_udc.h USB: gadget: pxa25x: basic transceiver support 2009-09-23 06:46:23 -07:00
pxa27x_udc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
pxa27x_udc.h USB: pxa27x_udc: use four bits to store endpoint addresses 2010-05-20 13:21:36 -07:00
r8a66597-udc.c usb: gadget: r8a66597-udc pio to mmio accessor conversion. 2010-06-02 16:31:02 +09:00
r8a66597-udc.h usb: gadget: r8a66597-udc pio to mmio accessor conversion. 2010-06-02 16:31:02 +09:00
rndis.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rndis.h USB: gadget: Add EEM gadget driver 2009-09-23 06:46:35 -07:00
s3c2410_udc.c USB: s3c2410_udc: be aware of connected gadget driver 2010-07-26 12:00:58 -07:00
s3c2410_udc.h
s3c-hsotg.c USB: s3c-hsotg: Ensure FIFOs are fully flushed after layout 2010-06-04 13:16:19 -07:00
serial.c USB: replace uses of __constant_{endian} 2009-03-24 16:20:33 -07:00
storage_common.c sanitize vfs_fsync calling conventions 2010-05-21 18:31:21 -04:00
u_audio.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
u_audio.h USB: audio gadget: free alsa devices when unloading 2009-12-23 11:34:20 -08:00
u_ether.c USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
u_ether.h USB: Remove unsupported usb gadget drivers 2010-03-02 14:54:57 -08:00
u_phonet.h
u_serial.c USB: g_serial: fix tty cleanup on unload 2010-06-30 08:16:05 -07:00
u_serial.h
usbstring.c USB: Gadget: fix UTF conversion in the usbstring library 2009-05-08 19:34:56 -07:00
uvc_queue.c V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
uvc_queue.h V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
uvc_v4l2.c V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
uvc_video.c V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
uvc.h V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
webcam.c V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
zero.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00