Hi,
I'm getting an oops on my MIPS system with a NEC EHCI USB controller and
Linux 2.4.30.
I have traced this to a NULL pointer dereference in start_unlink_async():
prev = ehci->async;
while (prev->qh_next.qh != qh) {
prev = prev->qh_next.qh;
// prev==NULL when unplugging
}
This always happens when I unplug an usb2.0 hub with an usb1.0 device
(keyboard) connected. It also happens when I unplug the usb1.0 device
from the hub.
If anyone has some info or advice on how to fix this I would be most
grateful. I can't currently run my system on linux 2.6, but if someone
knows that this has been fixed in 2.6 I can try to backport the fix.
Thanks.
The oops:
Unable to handle kernel paging request at virtual address 00000048, epc
== 801f9ed0, ra == 801f9ed0
Oops in fault.c::do_page_fault, line 206:
$0 : 00000000 10001800 00000008 00000000 802dd8a0 00000001 00000001 00000001
$8 : 00000001 fffffca6 00003ca6 00000000 fffffff4 ffffffff 00000010 00000007
$16: 00000000 a03f3300 81196200 00010b19 a03f334c 81196200 00000001 00000001
$24: 802b3c4f 802f4f97 802b2000 802b3d08 00000001 801f9ed0
Hi : 00000000
Lo : 00000009
epc : 801f9ed0 Tainted: P
Status: 10001803
Cause : 90808008
Process swapper (pid: 0, stackpage=802b2000)
Stack: a03f2360 a03f3300 00000001 00000001 a03f2360 a03f2360 86dcfc50
a03f3300 801f8f58 801f8ec8 8021c978 81196200 a03f3300 811927dc a03f2060
a03f334c 00000000 00000040 00000000 00000000 a03f3300 00000000 0000032f
00000065 81193194 a03f1194 00000194 801fbdd8 801dd484 00000044 802b3ea8
81195160 000004eb 00000800 00000008 0000009d 81196200 00000001 802b3ea8
00000023 ...
Call Trace: [<801f8f58>] [<801f8ec8>] [<8021c978>] [<801fbdd8>]
[<801dd484>]
[<801fc734>] [<801fc884>] [<80208034>] [<801f6f48>] [<80103350>]
[<80103350>]
[<80117fcc>] [<8027c754>] [<80103620>] [<80103620>] [<8027c8cc>]
[<8027c754>]
[<8027c788>] [<801320a8>] [<8027c8cc>] [<8027c300>] [<801030e4>]
[<801042d8>]
[<801030e8>] [<8010077c>]
Code: 8fbf0020 0c044bd0 00000000 <0807e785> 8e020048 8e420100
10400004 2402ffdf 02621024
>>RA; 801f9ed0 <start_unlink_async+154/194>
>>$4; 802dd8a0 <log_wait+0/8>
>>$24; 802b3c4f <init_task_union+1c4f/2000>
>>$25; 802f4f97 <printk_buf.4+3ff/400>
>>$28; 802b2000 <init_task_union+0/2000>
>>$29; 802b3d08 <init_task_union+1d08/2000>
>>$31; 801f9ed0 <start_unlink_async+154/194>
>>PC; 801f9ed0 <start_unlink_async+154/194> <=====
Trace; 801f8f58 <qh_completions+204/2fc>
Trace; 801f8ec8 <qh_completions+174/2fc>
Trace; 8021c978 <ip_rcv_finish+0/2a8>
Trace; 801fbdd8 <scan_periodic+2a0/2f8>
Trace; 801dd484 <refill_rx+138/15c>
Trace; 801fc734 <ehci_work+6c/fc>
Trace; 801fc884 <ehci_irq+c0/114>
Trace; 80208034 <net_rx_action+b4/1e0>
Trace; 801f6f48 <hcd_irq+34/6c>
Trace; 80103350 <handle_IRQ_event+78/f0>
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel