Skip to contentSkip to conversation

OOPS in 2.4.0-pre9 -- NULL pointer dereference in pci_insert_device

DISCUSSION Miles Lane 2 participants 3 messages Jan 26, 2001 – Feb 8, 2001 PCI

lore
Share & tools
lore

Miles Lane

author
#0 lore raw

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

#1 lore raw
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

#2 lore raw
In reply to Miles Lane
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