Hello! Linux 2.6.3-bk5 (and perhaps older versions too) accesses uninitialized memory if register_netdev() fails in the dev->init call. I could reproduce the problem in the dummy driver. That's what I changed in the driver: ========================== --- linux.orig/drivers/net/dummy.c +++ linux/drivers/net/dummy.c @@ -91,6 +91,11 @@ static struct net_device **dummies; /* Number of dummy devices to be set up by this module. */ module_param(numdummies, int, 0); +static int dummy_bad_init(struct net_device *dev) +{ + return -EBUSY; +} + static int __init dummy_init_one(int index) { struct net_device *dev_dummy; @@ -102,6 +107,7 @@ static int __init dummy_init_one(int ind if (!dev_dummy) return -ENOMEM; + dev_dummy->init = dummy_bad_init; if ((err = register_netdev(dev_dummy))) { free_netdev(dev_dummy); dev_dummy = NULL; ========================== And that's what I get: # modprobe dummy Unable to handle kernel paging request at virtual address 5a5a5bde printing eip: c02c98a4 *pde = 00000000 Oops: 0000 [#1] CPU: 0 EIP: 0060:[<c02c98a4>] Not tainted EFLAGS: 00010202 EIP is at unregister_netdevice+0x34/0x395 eax: 00000001 ebx: 5a5a5a5a ecx: c03b2520 edx: 00000000 esi: 5a5a5a5a edi: c0371c00 ebp: cdc49f64 esp: cdc49f38 ds: 007b es: 007b ss: 0068 Process modprobe (pid: 1099, threadinfo=cdc48000 task=ce2ee660) Stack: 00000286 00000246 d0003079 cdc49f44 cdc49f44 d08c40b7 c03b2520 fffffff0 5a5a5a5a fffffff0 c0371c00 cdc49f70 c026ec02 00000000 cdc49f7c d08c2083 00000000 cdc49f8c d08c4127 c0371c40 d08c2600 cdc49fbc c013f8d9 cdc49fbc Call Trace: [<d08c40b7>] dummy_init_one+0x67/0x70 [dummy] [<c026ec02>] unregister_netdev+0x12/0x20 [<d08c2083>] dummy_free_one+0x13/0x30 [dummy] [<d08c4127>] dummy_init_module+0x67/0x78 [dummy] [<c013f8d9>] sys_init_module+0x1b9/0x330 [<c0168dbf>] filp_close+0x4f/0x80 [<c0109bff>] syscall_call+0x7/0xb Code: 8b 86 84 01 00 00 85 c0 0f 84 f9 02 00 00 83 f8 02 0f 85 e3 Segmentation fault The kernel configuration is here: http://www.red-bean.com/~proski/tmp/bad-dummy.config -- Regards, Pavel Roskin - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html