aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/macvlan.c4
-rw-r--r--net/8021q/vlan.c4
-rw-r--r--net/core/dev.c4
3 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 0ef0eb0db945..0fc9dc7f20db 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -788,6 +788,10 @@ static int macvlan_device_event(struct notifier_block *unused,
788 } 788 }
789 break; 789 break;
790 case NETDEV_UNREGISTER: 790 case NETDEV_UNREGISTER:
791 /* twiddle thumbs on netns device moves */
792 if (dev->reg_state != NETREG_UNREGISTERING)
793 break;
794
791 list_for_each_entry_safe(vlan, next, &port->vlans, list) 795 list_for_each_entry_safe(vlan, next, &port->vlans, list)
792 vlan->dev->rtnl_link_ops->dellink(vlan->dev, NULL); 796 vlan->dev->rtnl_link_ops->dellink(vlan->dev, NULL);
793 break; 797 break;
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index a2ad15250575..2c6c2bd6e4a9 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -525,6 +525,10 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
525 break; 525 break;
526 526
527 case NETDEV_UNREGISTER: 527 case NETDEV_UNREGISTER:
528 /* twiddle thumbs on netns device moves */
529 if (dev->reg_state != NETREG_UNREGISTERING)
530 break;
531
528 /* Delete all VLANs for this dev. */ 532 /* Delete all VLANs for this dev. */
529 grp->killall = 1; 533 grp->killall = 1;
530 534
diff --git a/net/core/dev.c b/net/core/dev.c
index c09ff096525a..2c7934f8cf3e 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5686,6 +5686,10 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
5686 5686
5687 /* Notify protocols, that we are about to destroy 5687 /* Notify protocols, that we are about to destroy
5688 this device. They should clean all the things. 5688 this device. They should clean all the things.
5689
5690 Note that dev->reg_state stays at NETREG_REGISTERED.
5691 This is wanted because this way 8021q and macvlan know
5692 the device is just moving and can keep their slaves up.
5689 */ 5693 */
5690 call_netdevice_notifiers(NETDEV_UNREGISTER, dev); 5694 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
5691 call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev); 5695 call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);