On Thu, Jul 05, 2012 at 02:22:00PM -0700, David Miller wrote: > > Steffen Klassert posted a patch which fixes this. Steffen's patch converts one oops message into another. tree: git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git master head: 700db99d0140e9da2a31e08ebd3e1b121691aa26 commit: a2de86f63cfc92f7aaf11e7b9d9f2150946a1622 [1/2] ipv6: Initialize the neighbour pointer of rt6_info on allocation x86_64-allyesdebian BBB That 3 'B's indicate boot failures for all the 3 commits (detailed below). Where commit 0 still has the old error message. Commit 1 and 2 (both with Steffen's fix) trigger another oops. Note that commit 2 is boot tested 9 times, all of them produce about the same error message. 0: B c90a9bb [ 77.308688] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC [__nla_put nla_put inet6_rt_notify fib6_add __ip6_ins_rt ip6_route_add addrconf_add_mroute addrconf_add_dev addrconf_dev_config addrconf_notify notifier_call_chain __raw_notifier_call_chain raw_notifier_call_chain call_netdevice_notifiers __dev_notify_flags dev_change_flags ip_auto_config do_one_initcall kernel_init kernel_thread_helper] 1: B a2de86f [ 127.378529] BUG: unable to handle kernel paging request at 00000000d8be176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 86.189249] BUG: unable to handle kernel paging request at 00000000d0d4176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 91.294019] BUG: unable to handle kernel paging request at 00000000eac8176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 136.361566] BUG: unable to handle kernel paging request at 000000008eab176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 133.408933] BUG: unable to handle kernel paging request at 000000009bc2176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 136.259517] BUG: unable to handle kernel paging request at 00000000b79d176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 82.898992] BUG: unable to handle kernel paging request at 000000003ae1176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 85.065760] BUG: unable to handle kernel paging request at 00000000a2c1176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 83.797562] BUG: unable to handle kernel paging request at 00000000fca1176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] 2: B 700db99 [ 157.345636] BUG: unable to handle kernel paging request at 0000000067bc176d [ip6_dst_lookup_tail ip6_dst_lookup_flow ip6_datagram_connect inet_dgram_connect sys_connect system_call_fastpath] [ 124.000087] vhci_hcd: changed 0 [ 126.016883] vhci_hcd: changed 0 [ 127.378529] BUG: unable to handle kernel paging request at 00000000d8be176d [ 127.381203] IP: [] ip6_dst_lookup_tail+0xd5/0x1d8 [ 127.381203] PGD 0 [ 127.381203] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC [ 127.381203] CPU 0 [ 127.381203] Modules linked in: [ 127.381203] [ 127.381203] [ 127.381203] Pid: 3073, comm: sshd Not tainted 3.5.0-rc5+ #2 Bochs Bochs [ 127.381203] RIP: 0010:[] [] ip6_dst_lookup_tail+0xd5/0x1d8 [ 127.381203] RSP: 0018:ffff8800122d1d08 EFLAGS: 00010206 [ 127.381203] RAX: 00000000d8be1600 RBX: ffff8800122d1db0 RCX: 0000000000000015 [ 127.381203] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 0000000000000246 [ 127.381203] RBP: ffff8800122d1d98 R08: ffff88001f3d5580 R09: ffffffff85124e70 [ 127.381203] R10: ffffffff840401a0 R11: ffff88001214be70 R12: ffff8800122d1e10 [ 127.381203] R13: 0000000000000000 R14: ffffffff855c5e00 R15: ffff88000cf6e938 [ 127.381203] FS: 00007fc9742597c0(0000) GS:ffff88001f200000(0000) knlGS:0000000000000000 [ 127.381203] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 127.381203] CR2: 00000000d8be176d CR3: 000000001219a000 CR4: 00000000000006f0 [ 127.381203] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 127.381203] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 127.381203] Process sshd (pid: 3073, threadinfo ffff8800122d0000, task ffff880011c74d40) [ 127.381203] Stack: [ 127.381203] ffff8800122d1d18 ffff8800122d1e34 ffff8800122d1d28 ffffffff8111ee10 [ 127.381203] ffff8800122d1d48 ffffffff8111f528 ffffffff810c0f1e ffffffff810da5f8 [ 127.381203] ffff8800122d1d68 00000000810da56c 0000000000000092 00000000b4cb58b8 [ 127.381203] Call Trace: [ 127.381203] [] ? irq_trace+0x14/0x21 [ 127.381203] [] ? time_hardirqs_off+0x26/0x2a [ 127.381203] [] ? local_clock+0x3b/0x52 [ 127.381203] [] ? trace_hardirqs_off+0xd/0xf [ 127.381203] [] ? _local_bh_enable_ip+0xbb/0xd8 [ 127.381203] [] ip6_dst_lookup_flow+0x34/0x7e [ 127.381203] [] ip6_datagram_connect+0x34b/0x4a4 [ 127.381203] [] ? local_bh_enable_ip+0xe/0x10 [ 127.381203] [] inet_dgram_connect+0x3f/0x6e [ 127.381203] [] sys_connect+0x9b/0xd9 [ 127.381203] [] ? trace_hardirqs_on_caller+0x123/0x17f [ 127.381203] [] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 127.381203] [] system_call_fastpath+0x16/0x1b [ 127.381203] Code: 8a 48 6e c0 e9 05 0f b6 c9 eb 02 31 c9 4c 8b 85 78 ff ff ff 49 8d 54 24 14 4c 89 f7 e8 fa db 00 00 85 c0 0f 85 bb 00 00 00 eb a4 80 6d 01 00 00 de 0f 85 a5 00 00 00 e8 53 fc ff ff 48 8b 03 [ 127.381203] RIP [] ip6_dst_lookup_tail+0xd5/0x1d8 [ 127.381203] RSP [ 127.381203] CR2: 00000000d8be176d [ 127.484620] ---[ end trace 86ddee5921c27d8c ]--- commit a2de86f63cfc92f7aaf11e7b9d9f2150946a1622 Author: Steffen Klassert Date: Thu Jul 5 03:18:28 2012 +0000 ipv6: Initialize the neighbour pointer of rt6_info on allocation git commit 97cac082 (ipv6: Store route neighbour in rt6_info struct) added a neighbour pointer to rt6_info. Currently we don't initialize this pointer at allocation time. We assume this pointer to be valid if it is not a null pointer, so initialize it on allocation. Signed-off-by: Steffen Klassert Signed-off-by: David S. Miller diff --git a/net/ipv6/route.c b/net/ipv6/route.c index ceff71d..6cc6c88 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -273,7 +273,7 @@ static inline struct rt6_info *ip6_dst_alloc(struct net *net, 0, 0, flags); if (rt) { - memset(&rt->rt6i_table, 0, + memset(&rt->n, 0, sizeof(*rt) - sizeof(struct dst_entry)); rt6_init_peer(rt, table ? &table->tb6_peers : net->ipv6.peers); }