Subject: Re: [BUG] 2.6.29-rc* QinQ vlan trunking regression

From: Bart Trojanowski <[email-masked]>
Date: Wed, 4 Mar 2009 23:59:25 -0500

David,

* Bart Trojanowski <[email-masked]> [090304 23:54]:
> * David Miller <[email-masked]> [090304 22:53]:
> > vlan: Fix vlan-in-vlan crashes.
> > 
> > As analyzed by Patrick McHardy, vlan needs to reset it's
> > netdev_ops pointer in it's ->init() function but this
> > leaves the compat method pointers stale.
> > 
> > Add a netdev_resync_ops() and call it from the vlan code.
> <snip>
> >  include/linux/netdevice.h |    1 +
> >  net/8021q/vlan_dev.c      |    1 +
> >  net/core/dev.c            |   54 +++++++++++++++++++++++++++-----------------
> >  3 files changed, 35 insertions(+), 21 deletions(-)
> 
> I tried this patch onto v2.6.29-rc7-3-g559595a, but I still get a crash.
> I assume that this worked for you, so I am not putting much faith in my
> results at this late hour.  I'll confirm tomorrow morning that it's not
> something else.

... if you're interested, here is the Oops.  And like I said, I'll
retest tomorrow.

-Bart

[  231.748126] 802.1Q VLAN Support v1.8 Ben Greear <[email-masked]>
[  231.751563] All bugs added by David S. Miller <[email-masked]>
[  231.876164] PANIC: double fault, gdt at c364c000 [255 bytes]
[  231.876271] double fault, tss at c364fae0
[  231.876271] eip = f8163c65, esp = f3045000
[  231.876271] eax = f3d78800, ebx = f3d78800, ecx = f8163c62, edx = f3e4ce40
[  231.876271] esi = f3e4ce40, edi = c05228fc
[  232.156110] BUG: unable to handle kernel paging request at a0ad0eb4
[  232.159226] IP: [<c011fd49>] hrtick_start_fair+0x1f/0x17d
[  232.160050] *pde = 00000000 
[  232.160050] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
[  232.160050] last sysfs file: /sys/class/net/lo/operstate
[  232.160050] Modules linked in: 8021q virtio_balloon virtio_pci thermal_sys
[  232.160050] 
[  232.160050] Pid: 0, comm: swapper Tainted: G S         (2.6.29-rc7-bisect-00004-g39fc204 #1) 
[  232.160050] EIP: 0060:[<c011fd49>] EFLAGS: 00010092 CPU: 0
[  232.160050] EIP is at hrtick_start_fair+0x1f/0x17d
[  232.160050] EAX: c0599d80 EBX: c364e200 ECX: c3651dd4 EDX: f8163c85
[  232.160050] ESI: f52f6198 EDI: f622b708 EBP: c0545ddc ESP: c0545dc4
[  232.160050]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[  232.160050] Process swapper (pid: 0, ti=c0544000 task=c04fd380 task.ti=c0544000)
[  232.160050] Stack:
[  232.160050]  c3651d80 5f684afd 00000002 c3651dd4 f52f6198 c3651d80 c0545df0 c011ff82
[  232.160050]  f4796708 c03d6ad8 00000000 c0545e14 c011da63 0d94c928 00000036 00000000
[  232.160050]  c3651d80 c3651d80 c3648d80 00000522 c0545e20 c011daaa f4796708 c0545e34
[  232.160050] Call Trace:
[  232.160050]  [<c011ff82>] ? dequeue_task_fair+0x51/0x56
[  232.160050]  [<c011da63>] ? dequeue_task+0xd5/0xe4
[  232.160050]  [<c011daaa>] ? deactivate_task+0x19/0x1f
[  232.160050]  [<c011e504>] ? pull_task+0x11/0x3d
[  232.160050]  [<c011e6fc>] ? load_balance_fair+0x134/0x1ce
[  232.160050]  [<c0124684>] ? rebalance_domains+0x219/0x421
[  232.160050]  [<c01248ba>] ? run_rebalance_domains+0x2e/0x9e
[  232.160050]  [<c012e0e7>] ? __do_softirq+0x8d/0x133
[  232.160050]  [<c012e1d5>] ? do_softirq+0x48/0x57
[  232.160050]  [<c012e2e6>] ? irq_exit+0x38/0x66
[  232.160050]  [<c011228b>] ? smp_apic_timer_interrupt+0x74/0x82
[  232.160050]  [<c0103cc0>] ? apic_timer_interrupt+0x28/0x30
[  232.160050]  [<c011824f>] ? native_safe_halt+0x5/0x7
[  232.160050]  [<c0108c92>] ? default_idle+0x30/0x58
[  232.160050]  [<c0102605>] ? cpu_idle+0x63/0x7e
[  232.160050]  [<c03bee3b>] ? rest_init+0x53/0x55
[  232.160050] Code: 3e ff ff ff 83 c4 14 5b 5e 5f 5d c3 55 89 e5 57 89 d7 56 53 83 ec 0c 89 45 e8 8b 9a 80 00 00 00 b8 80 9d 59 c0 8b 52 04 8b 52 10 <03> 04 95 a0 1c 54 c0 39 45 e8 74 14 6a 00 68 7a 03 00 00 68 e1 
[  232.160050] EIP: [<c011fd49>] hrtick_start_fair+0x1f/0x17d SS:ESP 0068:c0545dc4
[  232.160050] ---[ end trace b72565b053d710aa ]---
[  232.160050] Kernel panic - not syncing: Fatal exception in interrupt
[  232.160050] ------------[ cut here ]------------
[  232.160050] WARNING: at kernel/smp.c:329 smp_call_function_many+0x37/0x1cf()
[  232.160050] Hardware name: 
[  232.160050] Modules linked in: 8021q virtio_balloon virtio_pci thermal_sys
[  232.160050] Pid: 0, comm: swapper Tainted: G S    D    2.6.29-rc7-bisect-00004-g39fc204 #1
[  232.160050] Call Trace:
[  232.160050]  [<c0129779>] warn_slowpath+0x71/0xa8
[  232.160050]  [<c0288f14>] ? _raw_spin_unlock+0x74/0x78
[  232.160050]  [<c03ce3aa>] ? _spin_unlock+0x1d/0x20
[  232.160050]  [<c0288f6b>] ? _raw_spin_lock+0x53/0xfa
[  232.160050]  [<c03ccadd>] ? mutex_unlock+0x8/0xa
[  232.160050]  [<c014b26d>] smp_call_function_many+0x37/0x1cf
[  232.160050]  [<c0108ec2>] ? stop_this_cpu+0x0/0x47
[  232.160050]  [<c014b421>] smp_call_function+0x1c/0x23
[  232.160050]  [<c0110e91>] native_smp_send_stop+0x1b/0x45
[  232.160050]  [<c03cb99e>] panic+0x48/0xe4
[  232.160050]  [<c0105ff4>] oops_end+0x9a/0xa9
[  232.160050]  [<c0106187>] die+0x54/0x5a
[  232.160050]  [<c01195d3>] do_page_fault+0x5f8/0x69d
[  232.160050]  [<c0119fe8>] ? __change_page_attr_set_clr+0x2a7/0x791
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0119fe8>] ? __change_page_attr_set_clr+0x2a7/0x791
[  232.160050]  [<c011a5b0>] ? kernel_map_pages+0xde/0xfe
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0118fdb>] ? do_page_fault+0x0/0x69d
[  232.160050]  [<c03ce82a>] error_code+0x72/0x78
[  232.160050]  [<f8163c85>] ? vlan_dev_neigh_setup+0x23/0x2a [8021q]
[  232.160050]  [<c011fd49>] ? hrtick_start_fair+0x1f/0x17d
[  232.160050]  [<c011ff82>] dequeue_task_fair+0x51/0x56
[  232.160050]  [<c011da63>] dequeue_task+0xd5/0xe4
[  232.160050]  [<c011daaa>] deactivate_task+0x19/0x1f
[  232.160050]  [<c011e504>] pull_task+0x11/0x3d
[  232.160050]  [<c011e6fc>] load_balance_fair+0x134/0x1ce
[  232.160050]  [<c0124684>] rebalance_domains+0x219/0x421
[  232.160050]  [<c01248ba>] run_rebalance_domains+0x2e/0x9e
[  232.160050]  [<c012e0e7>] __do_softirq+0x8d/0x133
[  232.160050]  [<c012e1d5>] do_softirq+0x48/0x57
[  232.160050]  [<c012e2e6>] irq_exit+0x38/0x66
[  232.160050]  [<c011228b>] smp_apic_timer_interrupt+0x74/0x82
[  232.160050]  [<c0103cc0>] apic_timer_interrupt+0x28/0x30
[  232.160050]  [<c011824f>] ? native_safe_halt+0x5/0x7
[  232.160050]  [<c0108c92>] default_idle+0x30/0x58
[  232.160050]  [<c0102605>] cpu_idle+0x63/0x7e
[  232.160050]  [<c03bee3b>] rest_init+0x53/0x55
[  232.160050] ---[ end trace b72565b053d710ab ]---
[  232.160050] ------------[ cut here ]------------
[  232.160050] WARNING: at kernel/smp.c:226 smp_call_function_single+0x37/0xe8()
[  232.160050] Hardware name: 
[  232.160050] Modules linked in: 8021q virtio_balloon virtio_pci thermal_sys
[  232.160050] Pid: 0, comm: swapper Tainted: G S    D W  2.6.29-rc7-bisect-00004-g39fc204 #1
[  232.160050] Call Trace:
[  232.160050]  [<c0129779>] warn_slowpath+0x71/0xa8
[  232.160050]  [<c0288f14>] ? _raw_spin_unlock+0x74/0x78
[  232.160050]  [<c03ce300>] ? _read_unlock+0x15/0x20
[  232.160050]  [<c0288f6b>] ? _raw_spin_lock+0x53/0xfa
[  232.160050]  [<c014b185>] smp_call_function_single+0x37/0xe8
[  232.160050]  [<c0108ec2>] ? stop_this_cpu+0x0/0x47
[  232.160050]  [<c014b2ef>] smp_call_function_many+0xb9/0x1cf
[  232.160050]  [<c0108ec2>] ? stop_this_cpu+0x0/0x47
[  232.160050]  [<c014b421>] smp_call_function+0x1c/0x23
[  232.160050]  [<c0110e91>] native_smp_send_stop+0x1b/0x45
[  232.160050]  [<c03cb99e>] panic+0x48/0xe4
[  232.160050]  [<c0105ff4>] oops_end+0x9a/0xa9
[  232.160050]  [<c0106187>] die+0x54/0x5a
[  232.160050]  [<c01195d3>] do_page_fault+0x5f8/0x69d
[  232.160050]  [<c0119fe8>] ? __change_page_attr_set_clr+0x2a7/0x791
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0119fe8>] ? __change_page_attr_set_clr+0x2a7/0x791
[  232.160050]  [<c011a5b0>] ? kernel_map_pages+0xde/0xfe
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0119ca2>] ? lookup_address+0x68/0x88
[  232.160050]  [<c0118fdb>] ? do_page_fault+0x0/0x69d
[  232.160050]  [<c03ce82a>] error_code+0x72/0x78
[  232.160050]  [<f8163c85>] ? vlan_dev_neigh_setup+0x23/0x2a [8021q]
[  232.160050]  [<c011fd49>] ? hrtick_start_fair+0x1f/0x17d
[  232.160050]  [<c011ff82>] dequeue_task_fair+0x51/0x56
[  232.160050]  [<c011da63>] dequeue_task+0xd5/0xe4
[  232.160050]  [<c011daaa>] deactivate_task+0x19/0x1f
[  232.160050]  [<c011e504>] pull_task+0x11/0x3d
[  232.160050]  [<c011e6fc>] load_balance_fair+0x134/0x1ce
[  232.160050]  [<c0124684>] rebalance_domains+0x219/0x421
[  232.160050]  [<c01248ba>] run_rebalance_domains+0x2e/0x9e
[  232.160050]  [<c012e0e7>] __do_softirq+0x8d/0x133
[  232.160050]  [<c012e1d5>] do_softirq+0x48/0x57
[  232.160050]  [<c012e2e6>] irq_exit+0x38/0x66
[  232.160050]  [<c011228b>] smp_apic_timer_interrupt+0x74/0x82
[  232.160050]  [<c0103cc0>] apic_timer_interrupt+0x28/0x30
[  232.160050]  [<c011824f>] ? native_safe_halt+0x5/0x7
[  232.160050]  [<c0108c92>] default_idle+0x30/0x58
[  232.160050]  [<c0102605>] cpu_idle+0x63/0x7e
[  232.160050]  [<c03bee3b>] rest_init+0x53/0x55
[  232.160050] ---[ end trace b72565b053d710ac ]---