procfs pre-2.1.90-2 Oops, bug in proc_delete_dentry or proc_delete_inode or something , similar

Andrea Arcangeli (arcangeli@mbox.queen.it)
Fri, 13 Mar 1998 18:27:37 +0100 (CET)


I am able to reproduce the Oops in several manners. I simply insmod a
module that create a bit complex proc directory (for example parport_pc),
then I chdir to it and remove and insmod again the module while I joke
with chdir and ls.

Here three Oops generated in three different ways:

I can' t find the first Oops logged... (??)

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

>>EIP: c01b65ee <dentry_hashtable+c16/2000>
Trace: c013d50f <proc_delete_inode+1b/2c>
Trace: c012ec90 <iput+7c/1b0>
Trace: c012ef32 <dput+a6/138>
Trace: c01221ff <sys_chdir+5f/68>
^^^^^^^^^ from cd
Trace: c0109926 <system_call+3a/40>
Code: c01b65ee <dentry_hashtable+c16/2000>
Code: c01b65ee <dentry_hashtable+c16/2000> a7 cmpsl %ds:(%esi),%es:(%edi)
Code: c01b65ef <dentry_hashtable+c17/2000> c1 b8 a0 6d c0 sarl $0x13,0xf8c06da0(%eax)
Code: c01b65f6 <dentry_hashtable+c1e/2000> da c0 fcmovb %st(0),%st
Code: c01b65fe <dentry_hashtable+c26/2000> 78 66 js c01b6660 <dentry_hashtable+c88/2000>
Code: c01b6600 <dentry_hashtable+c28/2000> 6e outsb %ds:(%esi),(%dx)
Code: c01b6601 <dentry_hashtable+c29/2000> c0 98 74 cc c1 rcrb $0xf0,0xb8c1cc74(%eax)

Mar 13 01:06:46 arca kernel: Oops: 0000
Mar 13 01:06:46 arca kernel: CPU: 0
Mar 13 01:06:46 arca kernel: EIP: 0010:[<c013e1a8>]
Mar 13 01:06:46 arca kernel: EFLAGS: 00010246
Mar 13 01:06:46 arca kernel: eax: 00000000 ebx: c1d16ca0 ecx: c1952000 edx: 00009cc0
Mar 13 01:06:46 arca kernel: esi: 00000001 edi: c1a86c60 ebp: 000010fd esp: c1953f78
Mar 13 01:06:46 arca kernel: ds: 0018 es: 0018 ss: 0018
Mar 13 01:06:46 arca kernel: Process ls (pid: 207, process nr: 19, stackpage=c1953000)
Mar 13 01:06:46 arca kernel: Stack: c1a86c60 c1985c1c ffffffec 000003d8 c012c0a0 c1a86c60 c1953fb0 c012bf50
Mar 13 01:06:46 arca kernel: c1952000 bffff6bc 08052d88 bffffabc c013e128 c1953fb0 bffff6c8 bffff6bc
Mar 13 01:06:46 arca kernel: 000003cc ffffffea c0109926 00000003 bffff6bc 000003d8 bffff6bc 08052d88
Mar 13 01:06:46 arca kernel: Call Trace: [<c012c0a0>] [<c012bf50>] [<c013e128>] [<c0109926>]
Mar 13 01:06:46 arca kernel: Code: 0f b7 12 52 56 6a 02 68 bd cb 18 c0 8b 4c 24 28 51 8b 4c 24

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

>>EIP: c013e1a8 <proc_readdir+80/118>
Trace: c012c0a0 <sys_getdents+cc/150>
Trace: c012bf50 <filldir>
Trace: c013e1a8 <proc_readdir+80/118>
Trace: c0109926 <system_call+3a/40>
Code: c013e1a8 <proc_readdir+80/118>
Code: c013e1a8 <proc_readdir+80/118> 0f b7 12 movzwl (%edx),%edx
Code: c013e1ab <proc_readdir+83/118> 52 pushl %edx
Code: c013e1ac <proc_readdir+84/118> 56 pushl %esi
Code: c013e1ad <proc_readdir+85/118> 6a 02 pushl $0x2
Code: c013e1af <proc_readdir+87/118> 68 bd cb 18 c0 pushl $0xc018cbbd
Code: c013e1ba <proc_readdir+92/118> 8b 4c 24 28 movl 0x28(%esp,1),%ecx
Code: c013e1be <proc_readdir+96/118> 51 pushl %ecx
Code: c013e1bf <proc_readdir+97/118> 8b 4c 24 00 movl 0x0(%esp,1),%ecx
Code: c013e1c9 <proc_readdir+a1/118> 90 nop
Code: c013e1ca <proc_readdir+a2/118> 90 nop
Code: c013e1cb <proc_readdir+a3/118> 90 nop

Mar 13 18:17:20 arca kernel: Oops: 0000
Mar 13 18:17:20 arca kernel: CPU: 0
Mar 13 18:17:20 arca kernel: EIP: 0010:[<c013dfa0>]
Mar 13 18:17:20 arca kernel: EFLAGS: 00010206
Mar 13 18:17:20 arca kernel: eax: c0137f68 ebx: 0000075c ecx: 0000c165 edx: 00000000
Mar 13 18:17:20 arca kernel: esi: c1657e00 edi: c1c181f8 ebp: c1c181f8 esp: c0b0ff28
Mar 13 18:17:20 arca kernel: ds: 0018 es: 0018 ss: 0018
Mar 13 18:17:20 arca kernel: Process insmod (pid: 560, process nr: 19, stackpage=c0b0f000)
Mar 13 18:17:20 arca kernel: Stack: c1657e00 c0b0ff84 c1c181f8 00000001 00000001 fffffffe c0129fbf c1c181f8
Mar 13 18:17:20 arca kernel: c1657e00 c0b0ff84 c1fec00c c1657720 c012a1cc c1657720 c0b0ff84 c1fec000
Mar 13 18:17:20 arca kernel: 00000001 bffff5c4 bffff604 c0b0ff84 c1c18100 c0129d78 c1fec001 c1fec002
Mar 13 18:17:20 arca kernel: Call Trace: [<c0129fbf>] [<c012a1cc>] [<c0129d78>] [<c012a285>] [<c01282a3>] [<c0109926>]
Mar 13 18:17:20 arca kernel: Code: 66 8b 03 66 85 c0 74 48 0f b7 4b 02 8b 74 24 20 39 4e 44 75

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

>>EIP: c013dfa0 <proc_lookup+48/d0>
Trace: c0129fbf <real_lookup+47/70>
Trace: c012a1cc <lookup_dentry+15c/1e8>
Trace: c0129d78 <getname+98/f4>
Trace: c012a285 <__namei+2d/84>
Trace: c01282a3 <sys_newstat+13/64>
Trace: c0109926 <system_call+3a/40>
Code: c013dfa0 <proc_lookup+48/d0>
Code: c013dfa0 <proc_lookup+48/d0> 66 8b 03 movw (%ebx),%ax
Code: c013dfa3 <proc_lookup+4b/d0> 66 85 c0 testw %ax,%ax
Code: c013dfa6 <proc_lookup+4e/d0> 74 48 je c013dff0 <proc_lookup+98/d0>
Code: c013dfa8 <proc_lookup+50/d0> 0f b7 4b 02 movzwl 0x2(%ebx),%ecx
Code: c013dfb2 <proc_lookup+5a/d0> 8b 74 24 20 movl 0x20(%esp,1),%esi
Code: c013dfb6 <proc_lookup+5e/d0> 39 4e 44 cmpl %ecx,0x44(%esi)
Code: c013dfb9 <proc_lookup+61/d0> 75 00 jne c013dfb5 <proc_lookup+5d/d0>
Code: c013dfc1 <proc_lookup+69/d0> 90 nop
Code: c013dfc2 <proc_lookup+6a/d0> 90 nop
Code: c013dfc3 <proc_lookup+6b/d0> 90 nop

Andrea[s] Arcangeli

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