Oops on megaraid.
Subsystems (2)
Kernel: 2.6.8.1 vanilla
Card: Dell PERC DC/2 (megaraid)
The oops happened when I attempted to unload the megaraid module. Before doing this, I ran the dellmgr program to reconfigure the raid.
Before the "oops" text, I saw:
Badness in remove_proc_entry at fs/proc/generic.c:688
[<c017c3fa>] remove_proc_entry+0x10a/0x150 [<d88f6e3e>] megaraid_exit+0x2e/0x3e [megaraid] [<c012c690>] sys_delete_module+0x150/0x1a0 [<c0142a00>] do_munmap+0x140/0x190 [<c010513b>] syscall_call+0x7/0xb
That above explains the few lines above "Unable to handle kernel paging..."
This system boots via NFS and / is nfsroot. There is no swap setup on the machine since there are no local disks. The raid there for testing before moving it to another machine. The system has 384mb of physical ram.
Oops follows:
ksymoops 2.4.9 on i686 2.6.8.1. Options used
-v /lib/modules/2.6.8.1/build/vmlinux (specified)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.6.8.1/ (default)
-m /boot/System.map-2.6.8.1 (default)Error (regular_file): read_ksyms stat /proc/ksyms failed No modules in ksyms, skipping objects
No ksyms, skipping lsmod
[<c017c3fa>] remove_proc_entry+0x10a/0x150 [<d88f6e3e>] megaraid_exit+0x2e/0x3e [megaraid] [<c012c690>] sys_delete_module+0x150/0x1a0 [<c0142a00>] do_munmap+0x140/0x190 [<c010513b>] syscall_call+0x7/0xb Unable to handle kernel paging request at virtual address 4b87ad72 c017b52e *pde = 00000000 Oops: 0000 [#1] CPU: 0 EIP: 0060:[<c017b52e>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010292 (2.6.8.1)
eax: 4b87ad6e ebx: d7b68cb4 ecx: 00000004 edx: d7b68c80
esi: 00000004 edi: 4b87ad6e ebp: 000040f8 esp: d23d3e8c
ds: 007b es: 007b ss: 0068
Stack: 00000004 4b87ad6e c017c33c 00000004 d23d3ed4 4b87ad6e d23d3ec8 d23d3ed4
d77d9000 d7e6c1d4 d75c4074 d88f6d6a d23d3ed4 d7b68c80 00000000 177db000
0000007e d7e6c000 30616268 00000000 00000000 d704dbcc c4087800 d88fab44
Call Trace:
[<c017c33c>] remove_proc_entry+0x4c/0x150
[<d88f6d6a>] megaraid_remove_one+0x34a/0x370 [megaraid]
[<c01aca7b>] pci_device_remove+0x3b/0x40
[<c01e5a96>] device_release_driver+0x66/0x70
[<c01e5acb>] driver_detach+0x2b/0x40
[<c01e5f7c>] bus_remove_driver+0x4c/0x90
[<c01e64e3>] driver_unregister+0x13/0x30
[<c01acce6>] pci_unregister_driver+0x16/0x30
[<d88f6e4a>] megaraid_exit+0x3a/0x3e [megaraid]
[<c012c690>] sys_delete_module+0x150/0x1a0
[<c0142a00>] do_munmap+0x140/0x190
[<c010513b>] syscall_call+0x7/0xb
Code: 0f b7 48 04 3b 4c 24 0c 74 0d 31 c0 8b 34 24 8b 7c 24 04 83 Quoted 5 lines
Quoted 5 lines
EIP;
c017b52e<proc_match+e/40> <=====ebx;
d7b68cb4<pg0+1785dcb4/3fcf3000>
edx;d7b68c80<pg0+1785dc80/3fcf3000>
esp;d23d3e8c<pg0+120c8e8c/3fcf3000>
Trace; c017c33c <remove_proc_entry+4c/150>
Trace; d88f6d6a <pg0+185ebd6a/3fcf3000>
Trace; c01aca7b <pci_device_remove+3b/40>
Trace; c01e5a96 <device_release_driver+66/70>
Trace; c01e5acb <driver_detach+2b/40>
Trace; c01e5f7c <bus_remove_driver+4c/90>
Trace; c01e64e3 <driver_unregister+13/30>
Trace; c01acce6 <pci_unregister_driver+16/30>
Trace; d88f6e4a <pg0+185ebe4a/3fcf3000>
Trace; c012c690 <sys_delete_module+150/1a0>
Trace; c0142a00 <do_munmap+140/190>
Trace; c010513b <syscall_call+7/b>
Code; c017b52e <proc_match+e/40>
00000000 <_EIP>:
Code; c017b52e <proc_match+e/40> <=====
0: 0f b7 48 04 movzwl 0x4(%eax),%ecx <=====
Code; c017b532 <proc_match+12/40>
4: 3b 4c 24 0c cmp 0xc(%esp),%ecx
Code; c017b536 <proc_match+16/40>
8: 74 0d je 17 <_EIP+0x17>
Code; c017b538 <proc_match+18/40>
a: 31 c0 xor %eax,%eax
Code; c017b53a <proc_match+1a/40>
c: 8b 34 24 mov (%esp),%esi
Code; c017b53d <proc_match+1d/40>
f: 8b 7c 24 04 mov 0x4(%esp),%edi
Code; c017b541 <proc_match+21/40>
13: 83 00 00 addl $0x0,(%eax)
1 error issued. Results may not be reliable.
Modules loaded:
Module Size Used by reiserfs 244368 0 dm_mirror 20404 2 aic7xxx 195544 0 sd_mod 16320 0 megaraid 42376 0 snd_ymfpci 55236 0 snd_ac97_codec 66948 1 snd_ymfpci snd_pcm 86152 1 snd_ymfpci snd_opl3_lib 8896 1 snd_ymfpci snd_timer 21316 3 snd_ymfpci,snd_pcm,snd_opl3_lib snd_hwdep 7076 1 snd_opl3_lib snd_page_alloc 9032 2 snd_ymfpci,snd_pcm snd_mpu401_uart 6144 1 snd_ymfpci snd_rawmidi 20164 1 snd_mpu401_uart snd_seq_device 6440 2 snd_opl3_lib,snd_rawmidi snd 47972 9 snd_ymfpci,snd_ac97_codec,snd_pcm,snd_opl3_lib,snd_timer,snd_hwdep,snd_mpu401_uart,snd_rawmidi,snd_seq_device ymfpci 47872 0 ac97_codec 17004 1 ymfpci soundcore 7328 2 snd,ymfpci usbhid 29664 0 uhci_hcd 29936 0 usbcore 103908 4 usbhid,uhci_hcd piix 11488 0 [permanent] ide_core 115868 1 piix evdev 7296 0 sr_mod 13668 0 scsi_mod 70432 4 aic7xxx,sd_mod,megaraid,sr_mod cdrom 37756 1 sr_mod isofs 24228 0 dm_mod 56124 1 dm_mirror
Signature · 1 line
Lab tests show that use of micro$oft causes cancer in lab animals
Quoted 6 lines · Wakko Warner
Kernel: 2.6.8.1 vanilla
Card: Dell PERC DC/2 (megaraid)The oops happened when I attempted to unload the megaraid module. Before doing this, I ran the dellmgr program to reconfigure the raid.
Quoted 7 lines
Before the "oops" text, I saw:
Badness inremove_proc_entryatfs/proc/generic.c:688[<c017c3fa>] remove_proc_entry+0x10a/0x150 [<d88f6e3e>] megaraid_exit+0x2e/0x3e [megaraid] [<c012c690>] sys_delete_module+0x150/0x1a0 [<c0142a00>] do_munmap+0x140/0x190 [<c010513b>] syscall_call+0x7/0xb
Someone's removing non-empty directory in procfs. Let's see... Indeed.
#ifdef CONFIG_PROC_FS
remove_proc_entry("megaraid", &proc_root);#endif
pci_unregister_driver(&megaraid_pci_driver);
so we remove /proc/megaraid and then procees to remove controllers found by driver. Each of those has a subdirectory in /proc/megaraid...
Fix is trivial:
drivers/scsi/megaraid.c +2 -2
@@ -5109,11 +5109,11 @@*/ unregister_chrdev (major,"megadev" ); +pci_unregister_driver (&megaraid_pci_driver); +#ifdef CONFIG_PROC_FS remove_proc_entry ("megaraid" , &proc_root);#endif - -pci_unregister_driver (&megaraid_pci_driver); }module_init (megaraid_init);
Quoted 11 lines · Al Viro
Someone's removing non-empty directory in procfs. Let's see... Indeed.
#ifdef CONFIG_PROC_FS remove_proc_entry("megaraid", &proc_root);#endif
pci_unregister_driver(&megaraid_pci_driver);so we remove
/proc/megaraidand then procees to remove controllers found by driver. Each of those has a subdirectory in/proc/megaraid...Fix is trivial:
Cool, thanks.
Signature · 1 line
Lab tests show that use of micro$oft causes cancer in lab animals