Re: Linux 2.4.25-pre5

From: Marcelo Tosatti
Date: Thu Jan 15 2004 - 18:44:49 EST




On Thu, 15 Jan 2004, David S. Miller wrote:

> On Thu, 15 Jan 2004 18:19:40 -0200 (BRST)
> Marcelo Tosatti <marcelo.tosatti@xxxxxxxxxxxx> wrote:
>
> > Here is -pre5.
>
> If this is anything like the current 2.4.x BK tree, people will need this
> in order to get a successful build:
>
> --- Makefile.~1~ Thu Jan 15 12:13:10 2004
> +++ Makefile Thu Jan 15 12:13:12 2004
> @@ -1,6 +1,6 @@
> VERSION = 2
> PATCHLEVEL = 4
> -UBLEVEL = 25
> +SUBLEVEL = 25
> EXTRAVERSION = -pre5
>
> KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

I forgot to "bk push" (I never forget, you know).

Sir Woodhouse,

I just managed to crash a SMP box running dbench.

I guess this is related to your deadlock fix?

Unable to handle kernel NULL pointer dereference at virtual address
00000000 c011a673
*pde = 1efe0001
Oops: 0000
CPU: 6
EIP: 0010:[<c011a673>]

Not tainted
Using defaults from ksymoops -t elf32-i386-a i386
EFLAGS: 00010097 eax: ec4f81d4 ebx: df0f7dd0 ecx: 00000000 edx:
00000003 esi: cd09a1a0 edi: ec4f81d0 ebp: defe3e30 esp: defe3e18 ds: 0018
es: 0018 ss: 0018
Process sh (pid: 2325, stackpage=defe3000)
Stack:
00000001 00000282 00000003 ec4f8120 cd09a1a0 cd09e800 f6ef1002 c0163e24
ec4f8120 ec4f8120 defd9990 00000001 42132674 f5d426e0 cd09a1a0f6efb483
cd09a1f3 c0166010 cd09e800 00001002 cd09a1a0 ffffffea 00000000 cd09c440

Call Trace: [<c0163e24>] [<c0166010>] [<c015620b>] [<c016400e>]
[<c014c3a3>]
[<c014ccdf>] [<c014d16b>] [<c014d66d>] [<c0140ea4>] [<c014c02f>]
[<c01411f4>]
[<c0108c83>]
Code: 8b 01 85 45 f0 74 69 31 d2 9c 5e fa f0 fe 0d 80 7c 3a c0 0f

>>EIP; c011a673 <__wake_up+33/c0> <=====
Trace; c0163e24 <proc_get_inode+64/140>
Trace; c0166010 <proc_lookup+c0/e0>
Trace; c015620b <d_alloc+1b/180>
Trace; c016400e <proc_root_lookup+2e/50>
Trace; c014c3a3 <real_lookup+73/100>
Trace; c014ccdf <link_path_walk+76f/a20>
Trace; c014d16b <path_lookup+1b/30>
Trace; c014d66d <open_namei+6d/640>
Trace; c0140ea4 <filp_open+34/60>
Trace; c014c02f <getname+5f/a0>
Trace; c01411f4 <sys_open+34/a0>
Trace; c0108c83 <system_call+33/40>
Code; c011a673 <__wake_up+33/c0>
00000000 <_EIP>:
Code; c011a673 <__wake_up+33/c0> <=====
0: 8b 01 mov (%ecx),%eax <=====
Code; c011a675 <__wake_up+35/c0>
2: 85 45 f0 test %eax,0xfffffff0(%ebp)
Code; c011a678 <__wake_up+38/c0>
5: 74 69 je 70 <_EIP+0x70> c011a6e3
<__wake_up+a3/c0>
Code; c011a67a <__wake_up+3a/c0>
7: 31 d2 xor %edx,%edx
Code; c011a67c <__wake_up+3c/c0>
9: 9c pushf
Code; c011a67d <__wake_up+3d/c0>
a: 5e pop %esi
Code; c011a67e <__wake_up+3e/c0>
b: fa cli
Code; c011a67f <__wake_up+3f/c0>
c: f0 fe 0d 80 7c 3a c0 lock decb 0xc03a7c80
Code; c011a686 <__wake_up+46/c0>
13: 0f 00 00 sldtl (%eax)


proc_get_inode() does not call __wake_up(), so I'm wondering whats going
on here.

0xc0163e17 <proc_get_inode+87>: mov 0x20(%edi),%eax
0xc0163e1a <proc_get_inode+90>: push %ebx
0xc0163e1b <proc_get_inode+91>: call *0x8(%eax)
0xc0163e1e <proc_get_inode+94>: push %ebx
0xc0163e1f <proc_get_inode+95>: call 0xc01584c0 <unlock_new_inode>
****> 0xc0163e24 <proc_get_inode+100>: pop %edi
0xc0163e25 <proc_get_inode+101>: pop %eax
0xc0163e26 <proc_get_inode+102>: test %ebx,%ebx

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/