OOPS in 2.4.0-pre9 -- NULL pointer dereference in pci_insert_device
This highly reproducible OOPS gets triggered when I insert my Belkin BusPort Mobile after booting the machine with no other PC Cards inserted.
Jan 26 14:22:34 agate kernel: Kernel command line: auto BOOT_IMAGE=Serial-Debug ro root05 pci=biosirq console=ttyS0,38400 console=tty0 setup_delay Jan 26 14:23:03 agate kernel: Unable to handle kernel paging request at virtual address c5a347f4 Jan 26 14:23:03 agate kernel: c01c5593 Jan 26 14:23:03 agate kernel: *pde = 011af063 Jan 26 14:23:03 agate kernel: Oops: 0000 Jan 26 14:23:03 agate kernel: CPU: 0 Jan 26 14:23:03 agate kernel: EIP: 0010:[<c01c5593>] Jan 26 14:23:03 agate kernel: EFLAGS: 00013206 Jan 26 14:23:03 agate kernel: eax: 00000000 ebx: c5a347e0 ecx: c027588c edx: 00000000 Jan 26 14:23:03 agate kernel: esi: c4708400 edi: c11bdc8b ebp: c11c48c0 esp: c11bdc48 Jan 26 14:23:03 agate kernel: ds: 0018 es: 0018 ss: 0018 Jan 26 14:23:03 agate kernel: Process keventd (pid: 2, stackpage�1bd000) Jan 26 14:23:03 agate kernel: Stack: c4708400 00000007 c01ceb6a c4708400 c11c48c0 0000001e c4ffa000 c11bdf2c Jan 26 14:23:03 agate kernel: c11bc560 00000000 00000000 c4708524 c4708426 c11bdc8b 0000000b c4708400 Jan 26 14:23:03 agate kernel: 01000100 00000000 1045c861 00000000 00000000 00000000 00000000 c11c48c0 Jan 26 14:23:03 agate kernel: Call Trace: [<c01ceb6a>] [<c01cc0a5>] [<c01cc010>] [<c01cbfa8>] [<c01cc238>] [<c01d0016>] [<c0119f9c>] Jan 26 14:23:03 agate kernel: [<c01206e7>] [<c0105000>] [<c0105000>] [<c010744f>] Jan 26 14:23:04 agate kernel: Code: 83 7b 14 00 74 0e 56 53 e8 8c fd ff
ff 83 c4 08 85 c0 75 0a
Quoted 1 line
Quoted 1 line
EIP;
c01c5593<pci_insert_device+4b/a8> <==Trace;c01ceb6a<CardServices+842/e7c>
Trace; c01cc0a5 <unregister_ss_entry+2e5/4d4>
Trace; c01cc010 <unregister_ss_entry+250/4d4>
Trace; c01cbfa8 <unregister_ss_entry+1e8/4d4>
Trace; c01cc238 <unregister_ss_entry+478/4d4>
Trace; c01d0016 <unregister_driver+dee/3158>
Trace; c0119f9c <__run_task_queue+50/1ac>
Trace; c01206e7 <schedule_task+187/208>
Trace; c0105000 <gdt+4dd4/6f24>
Trace; c0105000 <gdt+4dd4/6f24>
Trace; c010744f <kernel_thread+23/1a0>
Code; c01c5593 <pci_insert_device+4b/a8>
00000000 <_EIP>:
Code; c01c5593 <pci_insert_device+4b/a8> <== 0: 83 7b 14 00 cmpl $0x0,0x14(%ebx) <==Code; c01c5597 <pci_insert_device+4f/a8>
4: 74 0e je 14 <_EIP+0x14> c01c55a7
<pci_insert_device+5f/a8>
Code; c01c5599 <pci_insert_device+51/a8>
6: 56 push %esi
Code; c01c559a <pci_insert_device+52/a8>
7: 53 push %ebx
Code; c01c559b <pci_insert_device+53/a8>
8: e8 8c fd ff ff call fffffd99 <_EIP+0xfffffd99>c01c532c <pci_match_device+74/c4>
Code; c01c55a0 <pci_insert_device+58/a8>
d: 83 c4 08 add $0x8,%esp
Code; c01c55a3 <pci_insert_device+5b/a8>
10: 85 c0 test %eax,%eax
Code; c01c55a5 <pci_insert_device+5d/a8>
12: 75 0a jne 1e <_EIP+0x1e> c01c55b1
<pci_insert_device+69/a8>
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
http://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
Quoted 5 lines · Miles Lane
This highly reproducible OOPS gets triggered when I insert my Belkin BusPort Mobile after booting the machine with no other PC Cards inserted.
I really can't work that trace out. Are you sure it's correct? System.map kosher, etc?
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
http://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
Quoted 11 lines · Miles Lane
Quoted 8 lines · Andrew Morton
Quoted 4 lines · Miles Lane
This highly reproducible OOPS gets triggered when I insert my Belkin BusPort Mobile after booting the machine with no other PC Cards inserted.
Quoted 7 lines
Quoted 2 lines
I really can't work that trace out. Are you sure it's correct? System.map kosher, etc?
Hi Andrew,
I am adding Linus to the TO:, since this problem may be in his yenta code.
I took him off again :) Let's suprise him when we have a fix. I suspect it's a broken driver and not yenta.
Quoted 2 lines
I'm really not sure what why the OOPS I sent was bogus. Perhaps these new OOPS traces will be more useful. I hope so!
Yep. The PCI driver list has become corrupted. The bug probably happened waaay before the oops, so we need to find out who did this. It can happen if a driver fails to unregister itself and then gets unloaded. Ten seconds later, boom.
Please try this patch. It just checks the sanity of the PCI driver list where ever it's touched, and also immediately prior to module unload.
It's against 2.4.2-pre1. Hopefully it'll apply to Alan's kernel. If the patch finds something, please feed through ksymooops.
kernel/module.c +3 -0
@@ -1052,6 +1052,9 @@/* And free the memory. */ +memset (mod,0 , mod->size); +#define CHECK_PCI_DRIVERS () check_pci_drivers(__FUNCTION__, __LINE__) +CHECK_PCI_DRIVERS ();module_unmap (mod); }
drivers/pci/pci.c +48 -3
206 lines not on this page · raw message
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
http://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel