As analyzed by Patrick McHardy, vlan needs to reset it's<snip>
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.include/linux/netdevice.h | 1 +I tried this patch onto v2.6.29-rc7-3-g559595a, but I still get a crash.
net/8021q/vlan_dev.c | 1 +
net/core/dev.c | 54 +++++++++++++++++++++++++++-----------------
3 files changed, 35 insertions(+), 21 deletions(-)
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.