Oops with mcd module in 1.3.42

Bernd Schmidt (crux@Pool.Informatik.RWTH-Aachen.DE)
Mon, 20 Nov 1995 09:22:26 +0100 (MEZ)


There's a bug in the mcd module in Linux 1.3.42. After
"insmod mcd" fails because the port address is wrong, the kernel
will produce an Oops message when doing "cat /proc/devices":

Oops: 0000
CPU: 0
EIP: 0010:0017951e
EFLAGS: 00010297
eax: 01012f31 ebx: ffffffff ecx: 01012f31 edx: fffffffe
esi: ffffffff edi: 00714057 ebp: 00000000 esp: 00432ee0
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process cat (pid: 552, process nr: 21, stackpage=00432000)
Stack: 00000017 000000b8 00000054 00714000 0000003e 00714000 001b0620 ffffffff
0000001b 00000202 001796b4 00714054 0017d135 00432f2c 0011e3af 00714054
0017d130 00000017 01012f31 00000000 00432f90 00714000 00000400 00156112
Call Trace: 001796b4 0011e3af 01012f31 00156112 00156263 0010fa82 0011d33f
0010a2d9
Code: 80 38 00 74 07 40 4a 83 fa ff 75 f4 29 c8 89 c6 f7 c5 10 00

Here's what ksymoops has to say about it:

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

>>EIP: 17951e <vsprintf+27e/400>
Trace: 1796b4 <sprintf+14/18>
Trace: 11e3af <get_device_list+7f/a0>
Trace: 1012f31
Trace: 156112 <get_root_array+e2/130>
Trace: 156263 <array_read+a3/220>
Trace: 10fa82 <do_page_fault+122/280>
Trace: 11d33f <sys_read+7f/90>
Trace: 10a2d9 <system_call+59/a0>

Code: 17951e <vsprintf+27e/400> cmpb $0x0,(%eax)
Code: 179521 <vsprintf+281/400> je 17952a <vsprintf+28a/400>
Code: 179523 <vsprintf+283/400> incl %eax
Code: 179524 <vsprintf+284/400> decl %edx
Code: 179525 <vsprintf+285/400> cmpl $0xffffffff,%edx
Code: 179528 <vsprintf+288/400> jne 17951e <vsprintf+27e/400>
Code: 17952a <vsprintf+28a/400> subl %ecx,%eax
Code: 17952c <vsprintf+28c/400> movl %eax,%esi
Code: 17952e <vsprintf+28e/400> testl $0x90000010,%ebp
Code: 179534 <vsprintf+294/400> nop

I have not tried to reproduce this with earlier versions, so
I can't say whether it's a new feature or not.

Bernd Schmidt
crux@pool.informatik.rwth-aachen.de