Re: Oops in 2.1.24

Alain Knaff (alknaff@hal.local.host)
Wed, 29 Jan 1997 18:55:49 +0100


>On Wed, 29 Jan 1997, A Guy called Tyketto wrote:
>
>> Oops: 0000
>> CPU: 0
>> EIP: 0010:[<c01165c0>]
>> EFLAGS: 00010246
>> eax: 00000000 ebx: c1830b60 ecx: ffffffff edx: 00000020
>> esi: 6c613261 edi: 6c613261 ebp: 000003ef esp: c096df68
>> ds: 0018 es: 0018 ss: 0018
>> Process insmod (pid: 98, process nr: 23, stackpage=c096d000)
>> Stack: fffffffe 08054cc0 00000400 c182c000 00000000 00000000 00000400 c1830
>e4f
>> 08054db8 080550af 0000001f c011688d c182c000 08054cc0 00000011 bffff
>dec
>> c0a71018 00000400 bffffdec bffffda8 c010a530 c0941000 c010a3f8 08054
>b38
>> Call Trace: [<c182c000>] [<c1830e4f>] [<c011688d>] [<c182c000>] [<c010a530>
>] [<c010a3f8>]
>> Code: f2 ae f7 d1 49 89 ce 8d 6c 2e 01 ff 44 24 28 83 c3 08 39 54
>>
>> Using `/System.map' to map addresses to symbols.
>>
>> >>EIP: c01165c0 <qm_symbols+1dc/23c>
>
>There is definitely something fishy in here, I've seen too many reports
>about oopses like this one, all happening in qm_symbols and with similar
>values in %edx. I'll try to take a look at the code tomorrow if no one
>else does it before..
>

I got the same, and tracked it down to a type in module.c. The
following patch fixes the problem:

diff -ur 2.1.24/linux/kernel/module.c linux/kernel/module.c
--- 2.1.24/linux/kernel/module.c Mon Jan 27 18:55:40 1997
+++ linux/kernel/module.c Tue Jan 28 21:58:32 1997
@@ -583,7 +583,7 @@

calc_space_needed:
for (; i < mod->nsyms; ++i, ++s)
- space += strlen((++s)->name)+1;
+ space += strlen(s->name)+1;

if (put_user(space, ret))
return -EFAULT;

Alain