--- x/net/8021q/vlan.c +++ y/net/8021q/vlan.c @@ -384,8 +384,6 @@ static int vlan_device_event(struct noti dev->name); vlan_vid_add(dev, htons(ETH_P_8021Q), 0); } - if (event == NETDEV_DOWN) - vlan_vid_del(dev, htons(ETH_P_8021Q), 0); vlan_info = rtnl_dereference(dev->vlan_info); if (!vlan_info) @@ -522,6 +520,8 @@ static int vlan_device_event(struct noti vlan_filter_drop_vids(vlan_info, htons(ETH_P_8021AD)); break; } + if (event == NETDEV_DOWN) + vlan_vid_del(dev, htons(ETH_P_8021Q), 0); out: return NOTIFY_DONE;