vlan: Fix vlan-in-vlan crashes.
authorDavid S. Miller <davem@davemloft.net>
Thu, 5 Mar 2009 07:46:25 +0000 (23:46 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 5 Mar 2009 07:46:25 +0000 (23:46 -0800)
commit9d40bbda599def1e1d155d7f7dca14fe8744bd2b
treed246fbaec294830ecab0bb4b3b38d925abb5ffd8
parent54acd0efab072cb70e87206329d561b297f93bbb
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>
include/linux/netdevice.h
net/8021q/vlan_dev.c
net/core/dev.c