Subject: Re: Fw: Oops in register_proc_table (2.6.1-mm4)

From: Andrew Morton <[email-masked]>
Date: Sat, 17 Jan 2004 17:32:02 -0800

OK, I can reproduce this oops now.

0xc0126f7d in register_proc_table (table=0xc04cc80c, root=0xcff92600) at string.h:182
182     __asm__ __volatile__(
(gdb) bt
#0  0xc0126f7d in register_proc_table (table=0xc04cc80c, root=0xcff92600) at string.h:182
#1  0xc0126fcb in register_proc_table (table=0xc04cd540, root=0xcff92680) at sysctl.c:1187
#2  0xc0126fcb in register_proc_table (table=0xc04cf624, root=0xcff95680) at sysctl.c:1187
#3  0xc0126fcb in register_proc_table (table=0xc0451958, root=0xcffa0380) at sysctl.c:1187
#4  0xc051f727 in sysctl_init () at sysctl.c:854
#5  0xc0105169 in init (unused=0x0) at init/main.c:557
(gdb) f 3
#3  0xc0126fcb in register_proc_table (table=0xc0451958, root=0xcffa0380) at sysctl.c:1187
1187                            register_proc_table(table->child, de);
(gdb) p *table
$1 = {ctl_name = 3, procname = 0xc043394e "net", data = 0x0, maxlen = 0, mode = 365, child = 0xc04cf5a0, 
  proc_handler = 0, strategy = 0, de = 0xcff95680, extra1 = 0x0, extra2 = 0x0}
(gdb) f 2
#2  0xc0126fcb in register_proc_table (table=0xc04cf624, root=0xcff95680) at sysctl.c:1187
1187                            register_proc_table(table->child, de);
(gdb) p *table
$2 = {ctl_name = 12, procname = 0xc0431b88 "ipv6", data = 0x0, maxlen = 0, mode = 365, 
  child = 0xc04cd540, proc_handler = 0, strategy = 0, de = 0xcff92680, extra1 = 0x0, extra2 = 0x0}
(gdb) f 1
#1  0xc0126fcb in register_proc_table (table=0xc04cd540, root=0xcff92680) at sysctl.c:1187
1187                            register_proc_table(table->child, de);
(gdb) p *table
$3 = {ctl_name = 18, procname = 0xc0431402 "route", data = 0x0, maxlen = 0, mode = 365, 
  child = 0xc04cc680, proc_handler = 0, strategy = 0, de = 0xcff92600, extra1 = 0x0, extra2 = 0x0}
(gdb) f 0
#0  0xc0126f7d in register_proc_table (table=0xc04cc80c, root=0xcff92600) at string.h:182
182     __asm__ __volatile__(
(gdb) p *table
$4 = {ctl_name = 1220, procname = 0x927c0 <Address 0x927c0 out of bounds>, data = 0x9, maxlen = 60000, 
  mode = 500, child = 0x1000, proc_handler = 0, strategy = 0, de = 0x0, extra1 = 0x0, extra2 = 0x0}

It seems that ipv6 is registering something under /proc/net/ipv6/route
which has a bad ctl_table.procname.  I don't know what it is - the ipv6
sysctl code overpowered my attention span.

The .config is attached - 2.6.1-mm4 should demonstrate the problem.

Can one of the ip6 guys please look at this?