Re: pre-2.1.99-3..

root (root@euphoria.dopamine.com)
Wed, 29 Apr 1998 11:10:50 -0400


In message <Pine.LNX.3.95.980428233243.2189O-100000@penguin.transmeta.com>, Linus Torvalds write
s:
>
> in short, all known bugs should be fixed, but hey, what else is new?
>
> Linus

Here's one that's been around since 2.1.94 or so. I've posted this a
couple times and have gotten a response from Alan, so this may be in his
sound driver fixes which don't appear to be included yet. Basically,
once the uart401 module is loaded once, doing a cat of /proc/ioports
segfaults if the uart401 isn't loaded. This is with a Creative
Soundblaster 16 PnP set up with isapnptools.

Starting from a clean boot of pre-2.1.99-3 with no sound modules
loaded yet.

[10:41am] euphoria:~# lsmod
Module Size Used by

Doing a cat of /proc/ioports works fine.

[10:41am] euphoria:~# cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)
0376-0376 : ide1
03c0-03df : vga+
03e8-03ef : serial(set)
03f6-03f6 : ide0
03f8-03ff : serial(auto)
6000-6007 : ide0
6008-600f : ide1
6200-621f : 3c905 Boomerang 100baseTx

Load the sound modules.

[10:41am] euphoria:~# modprobe sb
[10:42am] euphoria:~# lsmod
Module Size Used by
sb 22392 0 (unused)
uart401 5456 0 [sb]
sound 55528 0 [sb uart401]

cat /proc/ioports still works fine.

[10:42am] euphoria:~# cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
0220-022f : soundblaster
02f8-02ff : serial(auto)
0330-0333 : MPU-401 UART
0376-0376 : ide1
03c0-03df : vga+
03e8-03ef : serial(set)
03f6-03f6 : ide0
03f8-03ff : serial(auto)
6000-6007 : ide0
6008-600f : ide1
6200-621f : 3c905 Boomerang 100baseTx

Unload the sb module.

[10:42am] euphoria:~# rmmod sb
[10:42am] euphoria:~# lsmod
Module Size Used by
uart401 5456 0
sound 55528 0 [uart401]

cat /proc/ioports still works fine.

[10:42am] euphoria:~# cat /proc/ioports
0000-001f : dma1
...
6200-621f : 3c905 Boomerang 100baseTx

Unload the uart401 module.

[10:42am] euphoria:~# rmmod uart401
[10:43am] euphoria:~# lsmod
Module Size Used by
sound 55528 0

cat /proc/ioports now segfaults.

[10:43am] euphoria:~# cat /proc/ioports
Segmentation fault

Reload the uart401 module.

[10:43am] euphoria:~# insmod uart401
[10:43am] euphoria:~# lsmod
Module Size Used by
uart401 5456 0 (unused)
sound 55528 0 [uart401]

cat /proc/ioports works again.

[10:43am] euphoria:~# cat /proc/ioports
0000-001f : dma1
...
6200-621f : 3c905 Boomerang 100baseTx

Unload the uart401 module again.

[10:43am] euphoria:~# rmmod uart401
[10:43am] euphoria:~# lsmod
Module Size Used by
sound 55528 0

cat /proc/ioports segfaults again.

[10:43am] euphoria:~# cat /proc/ioports
Segmentation fault

Here's the Oops from dmesg.

Unable to handle kernel paging request at virtual address c881e7ef
current->tss.cr3 = 06b74000, %cr3 = 06b74000
*pde = 07ece063
*pte = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c01994bf>]
EFLAGS: 00010297
eax: c881e7ef ebx: ffffffff ecx: c881e7ef edx: fffffffe
esi: ffffffff edi: c6bb30eb ebp: 00000000 esp: c6cfdee4
ds: 0018 es: 0018 ss: 0018
Process cat (pid: 690, process nr: 43, stackpage=c6cfd000)
Stack: c01cca24 000000df c6bb3000 00000c00 c7f16540 00000246 c6c85180 ffffffff
0000001b 00000001 c0199668 c6bb30df c019c3d9 c6cfdf34 c01172bc c6bb30df
c019c3ca 00000330 00000333 c881e7ef 00000000 c6cfdf90 c6ba7100 c0142e8a
Call Trace: [<c0199668>] [<c019c3d9>] [<c01172bc>] [<c019c3ca>] [<c881e7ef>] [<c0142e8a>] [<c014301e>]
[<c010e3e3>] [<c0123232>] [<c010985c>]
Code: 80 38 00 74 07 40 4a 83 fa ff 75 f4 29 c8 89 c6 f7 c5 10 00

Here's the Oops run through ksymoops.

Using `/boot/System.map' to map addresses to symbols.

>>EIP: c01994bf <vsprintf+28f/424>
Trace: c0199668 <sprintf+14/b88>
Trace: c019c3d9 <tvecs+6a5/7837>
Trace: c01172bc <get_ioport_list+38/64>
Trace: c019c3ca <tvecs+696/7837>
Trace: c881e7ef
Trace: c0142e8a <get_root_array+15e/1ac>
Trace: c014301e <array_read+be/1e0>
Trace: c010e3e3 <do_page_fault+143/328>
Trace: c0123232 <sys_read+b2/104>
Trace: c010985c <system_call+38/3c>
Code: c01994bf <vsprintf+28f/424>
Code: c01994bf <vsprintf+28f/424> 80 38 00 cmpb $0x0,(%eax)
Code: c01994c2 <vsprintf+292/424> 74 07 je c01994cb <vsprintf+29b/424>
Code: c01994c4 <vsprintf+294/424> 40 incl %eax
Code: c01994c5 <vsprintf+295/424> 4a decl %edx
Code: c01994c6 <vsprintf+296/424> 83 fa ff cmpl $0xffffffff,%edx
Code: c01994cf <vsprintf+29f/424> 75 f4 jne c01994bf <vsprintf+28f/424>
Code: c01994d1 <vsprintf+2a1/424> 29 c8 subl %ecx,%eax
Code: c01994d3 <vsprintf+2a3/424> 89 c6 movl %eax,%esi
Code: c01994d5 <vsprintf+2a5/424> f7 c5 10 00 00 testl $0x90000010,%ebp
Code: c01994e1 <vsprintf+2b1/424> 90 nop
Code: c01994e2 <vsprintf+2b2/424> 90 nop

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu