Skip to contentSkip to conversation

Oops when loading 3c509-module in test10

DISCUSSION H�vard Garnes 2 participants 2 messages Nov 2, 2000 – Nov 4, 2000 Network drivers

lore
Share & tools
lore
#0 lore raw

This occurs when the 3c509-module is being loaded at startup, and in /proc/modules it is listed as (initialising). It it worth mentioning that I have two 3c509-cards in my computer. This worked in test8.

Unable to handle kernel NULL pointer dereference at virtual address
00000070
c6d485a5
*pde = 00000000
Oops: 0002
CPU:    0
EIP:    0010:[<c6d485a5>]

Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010282
eax: 9c24a000 ebx: 00000004 ecx: 6b5f6768 edx: 00000070
esi: 00000006 edi: 00000003 ebp: 00000220 esp: c54eff08
ds: 0018 es: 0018 ss: 0018
Process modprobe (pid: 348, stackpage=c54ef000)

Stack: 00000000 00000000 c6d4804e ffffffea 00000070 c54eff3c c54eff2c
00000005 
       00ff0000 c6d4804e ffffffea c1044010 c039a280 9c24a000 ffff6edf
c6d49295 
       00000000 c6d48000 00000000 c011b1d8 c54ee000 0804b17c 08061798
bfffe118 
Call Trace: [<c6d4804e>] [<c6d4804e>] [<c6d49295>] [<c6d48000>]
[<c011b1d8>] [<c6d48048>] [<c6d0f000>] 
       [<c6d48048>] [<c010a7cf>] [<c030002b>] 
Code: 89 02 8b 44 24 38 66 89 42 04 8b 4c 24 40 89 69 20 8b 44 24 
Quoted 1 line
Quoted 1 line

EIP; c6d485a5 <[3c509].text.start+545/6e0> <=====

Trace; c6d4804e <[hisax].bss.end+15ab/15bd>
Trace; c6d4804e <[hisax].bss.end+15ab/15bd>
Trace; c6d49295 <[3c509]init_module+59/74>
Trace; c6d48000 <[hisax].bss.end+155d/15bd>
Trace; c011b1d8 <sys_init_module+3f8/4a0>
Trace; c6d48048 <[hisax].bss.end+15a5/15bd>
Trace; c6d0f000 <[isdn].bss.end+19b79/19bd9>
Trace; c6d48048 <[hisax].bss.end+15a5/15bd>
Trace; c010a7cf <system_call+33/38>
Trace; c030002b <stext_lock+809f/aff4>
Code; c6d485a5 <[3c509].text.start+545/6e0>
00000000 <_EIP>:
Code; c6d485a5 <[3c509].text.start+545/6e0> <=====
0: 89 02 mov %eax,(%edx) <=====
Code; c6d485a7 <[3c509].text.start+547/6e0>
2: 8b 44 24 38 mov 0x38(%esp,1),%eax
Code; c6d485ab <[3c509].text.start+54b/6e0>
6: 66 89 42 04 mov %ax,0x4(%edx)
Code; c6d485af <[3c509].text.start+54f/6e0>
a: 8b 4c 24 40 mov 0x40(%esp,1),%ecx
Code; c6d485b3 <[3c509].text.start+553/6e0>
e: 89 69 20 mov %ebp,0x20(%ecx)
Code; c6d485b6 <[3c509].text.start+556/6e0>
11: 8b 44 24 00 mov 0x0(%esp,1),%eax

1 warning issued. Results may not be reliable.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#1 lore raw
Quoted 4 lines · Håvard Garnes

This occurs when the 3c509-module is being loaded at startup, and in /proc/modules it is listed as (initialising). It it worth mentioning that I have two 3c509-cards in my computer. This worked in test8.

Oops. This is one of the newer (and better) ISA modules, which actually does allocate its device structure correctly.

Please apply this patch...

Jeff

Signature · 3 lines
Jeff Garzik             | Dinner is ready when
Building 1024           | the smoke alarm goes off.
MandrakeSoft            |	-/usr/games/fortune

Index: linux_2_4/drivers/net/3c509.c

drivers/net/3c509.c renamed from drivers/net/3c509.c:1.1.1.5 +7 -0
diff -u linux_2_4/drivers/net/3c509.c:1.1.1.5 linux_2_4/drivers/net/3c509.c:1.1.1.3
@@ -434,6 +436,13 @@
 	/* Free the interrupt so that some other card can use it. */
 	outw(0x0f00, ioaddr + WN0_IRQ);
  found:
+	if (dev == NULL) {
+		dev = init_etherdev(dev, sizeof(struct el3_private));
+		if (dev == NULL) {
+			release_region(ioaddr, EL3_IO_EXTENT);
+			return -ENOMEM;
+		}
+	}
 	memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
 	dev->base_addr = ioaddr;
 	dev->irq = irq;