Re: [Bug #12805] QinQ vlan trunking regression

David Miller
2009-03-14T22:04:49Z

From: "Rafael J. Wysocki" <rjw@sisk.pl>
Date: Sat, 14 Mar 2009 20:05:33 +0100 (CET)

> This message has been generated automatically as a part of a report
> of recent regressions.
>
> The following bug entry is on the current list of known regressions
> from 2.6.28. Please verify if it still should be listed and let me know
> (either way).
>
>
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=12805
> Subject : QinQ vlan trunking regression
> Submitter : Bart Trojanowski <bart@jukie.net>
> Date : 2009-02-28 18:05 (15 days old)
> References : http://marc.info/?l=linux-kernel&m=123584439115868&w=4

Fixed by:

commit 9d40bbda599def1e1d155d7f7dca14fe8744bd2b
Author: David S. Miller <davem@davemloft.net>
Date: Wed Mar 4 23:46:25 2009 -0800

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.

Any other driver which changes ->netdev_ops after register_netdevice()
will need to call this new function after doing so too.

With help from Patrick McHardy.

Tested-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>