[alsa-devel] Atmel_usba_udc: Kernel panic in usba_ep_enable
Hello List,
I'm having troubles with usb audio on an SAMA5D3 on 3.19.8 with a strange kernel panic.
The function f_audio_set_alt (f_uac1.c) is passing a NULL out_ep and so the usba_ep_enable crashes with a null pointer dereference as you can see from the debugging output:
[ 24.210000] ep1: ep_enable: desc= (null)
Unfortunately, there is nothing strange with my configuration, I'm trying to use the soundcard (which plays files flawlessly) as a usb soundcard, so the only thing I did was to compile g_audio as a module, enable UAC1 and did a modprode.
Can you share any advice?
Following kernel panic output:
[ 23.500000] g_audio gadget: adding config #1 'Linux USB Audio Gadget'/bf0232c8 [ 23.510000] g_audio gadget: adding 'g_audio'/cf9c6400 to config 'Linux USB Audio Gadget'/bf0232c8 [ 23.600000] g_audio gadget: Hardware params: access 3, format 2, channels 2, rate 48000 [ 23.630000] g_audio gadget: cfg 1/bf0232c8 speeds: high full [ 23.630000] g_audio gadget: interface 0 = g_audio/cf9c6400 [ 23.640000] g_audio gadget: interface 1 = g_audio/cf9c6400 [ 23.640000] g_audio gadget: Linux USB Audio Gadget, version: Feb 2, 2012 [ 23.650000] g_audio gadget: g_audio ready [ 24.200000] g_audio gadget: high-speed config #1: Linux USB Audio Gadget [ 24.200000] g_audio gadget: intf 0, alt 0 [ 24.200000] g_audio gadget: intf 1, alt 0 [ 24.210000] g_audio gadget: intf 1, alt 1 [ 24.210000] ep1: ep_enable: desc= (null) [ 24.210000] Unable to handle kernel NULL pointer dereference at virtual address 00000002 [ 24.210000] pgd = c0004000 [ 24.210000] [00000002] *pgd=00000000 [ 24.210000] Internal error: Oops: 17 [#1] ARM [ 24.210000] Modules linked in: usb_f_uac1 g_audio libcomposite [ 24.210000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.19.8+ #69 [ 24.210000] Hardware name: Atmel SAMA5 (Device Tree) [ 24.210000] task: c052c7b8 ti: c0522000 task.ti: c0522000 [ 24.210000] PC is at usba_ep_enable+0x28/0x200 [ 24.210000] LR is at usba_ep_enable+0x24/0x200 [ 24.210000] pc : [<c02815bc>] lr : [<c02815b8>] psr: 200f0193 [ 24.210000] sp : c0523e18 ip : 00000007 fp : 0000bb80 [ 24.210000] r10: 00000100 r9 : cfb17c00 r8 : 00000001 [ 24.210000] r7 : 000000c8 r6 : cf99aa10 r5 : 00000000 r4 : cf99d868 [ 24.210000] r3 : 00000006 r2 : 00000007 r1 : 00000000 r0 : 00000001 [ 24.210000] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel [ 24.210000] Control: 10c53c7d Table: 2fb28059 DAC: 00000015 [ 24.210000] Process swapper (pid: 0, stack limit = 0xc0522230) [ 24.210000] Stack: (0xc0523e18 to 0xc0524000) [ 24.210000] 3e00: 00000001 cf99d868 [ 24.210000] 3e20: cf9c6400 bf028694 00000001 c0530008 cfa13ac0 cfb17c00 cfb17a00 00000001 [ 24.210000] 3e40: cf9c6400 00000001 00000001 cf99aa18 00000000 bf015104 c0523e74 c0034d9c [ 24.210000] 3e60: cf9471c0 600f0193 cfb05f6c c0530704 c00398b8 c00398c4 c05306f8 c0039400 [ 24.210000] 3e80: 00000000 200f0193 00000007 00000006 00000000 cf99d810 0000000b cf99d848 [ 24.210000] 3ea0: cf99aa10 00000000 00000000 00000000 00000800 c0282f0c 0000001c ffffffff [ 24.210000] 3ec0: 7fffffff c0547d80 00000000 00000125 00000001 c054e23e 00010b01 00000001 [ 24.210000] 3ee0: 00000000 cf998240 cf802540 00000000 00000000 0000002d cf901dc0 c054e23e [ 24.210000] 3f00: 00000000 c0040af0 cf802200 c054eb00 cf901dc0 cf802540 00000000 00000000 [ 24.210000] 3f20: cf802200 c051ac50 cfffc480 c0040be0 cf901dc0 c0042e00 0000002d 0000002d [ 24.210000] 3f40: 00000000 c0040314 c0534ca0 c0040538 c000eec4 600f0013 ffffffff c0523f9c [ 24.210000] 3f60: c054e340 c0011b00 00000000 c0530918 00000000 c0017880 c0522000 c052a0c4 [ 24.210000] 3f80: c054e23c c054e23c c054e340 c051ac50 cfffc480 00000000 01000000 c0523fb0 [ 24.210000] 3fa0: c000eec0 c000eec4 600f0013 ffffffff c0522000 c0039b58 ffffffff c04f5c30 [ 24.210000] 3fc0: ffffffff ffffffff c04f5678 00000000 00000000 c051ac50 c054e514 c052a070 [ 24.210000] 3fe0: c051ac4c c052d860 20004059 410fc051 00000000 20008070 00000000 00000000 [ 24.210000] [<c02815bc>] (usba_ep_enable) from [<bf028694>] (f_audio_set_alt+0xc4/0x19c [usb_f_uac1]) [ 24.210000] [<bf028694>] (f_audio_set_alt [usb_f_uac1]) from [<bf015104>] (composite_setup+0x4e0/0x1640 [libcomposite]) [ 24.210000] [<bf015104>] (composite_setup [libcomposite]) from [<c0282f0c>] (usba_udc_irq+0x75c/0xc74) [ 24.210000] [<c0282f0c>] (usba_udc_irq) from [<c0040af0>] (handle_irq_event_percpu+0x78/0x140) [ 24.210000] [<c0040af0>] (handle_irq_event_percpu) from [<c0040be0>] (handle_irq_event+0x28/0x38) [ 24.210000] [<c0040be0>] (handle_irq_event) from [<c0042e00>] (handle_fasteoi_irq+0x9c/0x164) [ 24.210000] [<c0042e00>] (handle_fasteoi_irq) from [<c0040314>] (generic_handle_irq+0x2c/0x3c) [ 24.210000] [<c0040314>] (generic_handle_irq) from [<c0040538>] (__handle_domain_irq+0x54/0xa8) [ 24.210000] [<c0040538>] (__handle_domain_irq) from [<c0011b00>] (__irq_svc+0x40/0x54) [ 24.210000] [<c0011b00>] (__irq_svc) from [<c000eec4>] (arch_cpu_idle+0x38/0x3c) [ 24.210000] [<c000eec4>] (arch_cpu_idle) from [<c0039b58>] (cpu_startup_entry+0xa8/0xf4) [ 24.210000] [<c0039b58>] (cpu_startup_entry) from [<c04f5c30>] (start_kernel+0x374/0x380) [ 24.210000] Code: e5941004 e5946024 eb04d705 e5d40033 (e5d51002) [ 24.210000] ---[ end trace d5ac053970e7d2d1 ]--- [ 24.210000] Kernel panic - not syncing: Fatal exception in interrupt [ 24.210000] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
Hi
On Mon, May 11, 2015 at 05:58:27PM +0200, Angelo Compagnucci wrote:
Hello List,
I'm having troubles with usb audio on an SAMA5D3 on 3.19.8 with a strange kernel panic.
The function f_audio_set_alt (f_uac1.c) is passing a NULL out_ep and so the usba_ep_enable crashes with a null pointer dereference as you can see from the debugging output:
[ 24.210000] ep1: ep_enable: desc= (null)
Unfortunately, there is nothing strange with my configuration, I'm trying to use the soundcard (which plays files flawlessly) as a usb soundcard, so the only thing I did was to compile g_audio as a module, enable UAC1 and did a modprode.
Please apply:
commit 8d252db174ab27485126f540f368149e3c875e5a Author: Xuebing Wang xbing6@gmail.com Date: Wed Dec 10 16:28:15 2014 +0800
usb: gadget: f_uac1: update Class-Specific AudioControl Interface Header Descriptor
Update this according to USB Audio Class 1.0 spec. This fixes the Windows 7 detection issue.
Cc: Rafael Brune mail@rbrune.de Signed-off-by: Xuebing Wang xbing6@gmail.com Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Peter Chen peter.chen@freescale.com (Fixed some code style issues) Tested-by: Peter Chen peter.chen@freescale.com Signed-off-by: Felipe Balbi balbi@ti.com
commit 625763d101c7aa706b35f052cd978a61f1ef26bc Author: Xuebing Wang xbing6@gmail.com Date: Wed Dec 10 16:28:14 2014 +0800
usb: gadget: f_uac1: configure endpoint before using it
UAC1 forget to do it.
Signed-off-by: Xuebing Wang xbing6@gmail.com Signed-off-by: Peter Chen peter.chen@freescale.com Signed-off-by: Felipe Balbi balbi@ti.com
and check the error of the configure
From 36faa76befcdcc0d273c8cea32fef82f2fb85771 Mon Sep 17 00:00:00 2001
From: Michael Trimarchi michael@amarulasolutions.com Date: Mon, 11 May 2015 18:30:52 +0200 Subject: [PATCH] f_uac1: check return code from config_ep_by_speed
Signed-off-by: Michael Trimarchi michael@amarulasolutions.com --- drivers/usb/gadget/function/f_uac1.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c index 9719abf..7856b33 100644 --- a/drivers/usb/gadget/function/f_uac1.c +++ b/drivers/usb/gadget/function/f_uac1.c @@ -588,7 +588,10 @@ static int f_audio_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
if (intf == 1) { if (alt == 1) { - config_ep_by_speed(cdev->gadget, f, out_ep); + err = config_ep_by_speed(cdev->gadget, f, out_ep); + if (err) + return err; + usb_ep_enable(out_ep); out_ep->driver_data = audio; audio->copy_buf = f_audio_buffer_alloc(audio_buf_size);
participants (2)
-
Angelo Compagnucci
-
Michael Trimarchi