|
@@ -5066,13 +5066,14 @@ static struct pernet_operations __net_initdata netdev_net_ops = {
|
|
|
|
|
|
static void __net_exit default_device_exit(struct net *net)
|
|
|
{
|
|
|
- struct net_device *dev, *next;
|
|
|
+ struct net_device *dev;
|
|
|
/*
|
|
|
* Push all migratable of the network devices back to the
|
|
|
* initial network namespace
|
|
|
*/
|
|
|
rtnl_lock();
|
|
|
- for_each_netdev_safe(net, dev, next) {
|
|
|
+restart:
|
|
|
+ for_each_netdev(net, dev) {
|
|
|
int err;
|
|
|
char fb_name[IFNAMSIZ];
|
|
|
|
|
@@ -5083,7 +5084,7 @@ static void __net_exit default_device_exit(struct net *net)
|
|
|
/* Delete virtual devices */
|
|
|
if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink) {
|
|
|
dev->rtnl_link_ops->dellink(dev);
|
|
|
- continue;
|
|
|
+ goto restart;
|
|
|
}
|
|
|
|
|
|
/* Push remaing network devices to init_net */
|
|
@@ -5094,6 +5095,7 @@ static void __net_exit default_device_exit(struct net *net)
|
|
|
__func__, dev->name, err);
|
|
|
BUG();
|
|
|
}
|
|
|
+ goto restart;
|
|
|
}
|
|
|
rtnl_unlock();
|
|
|
}
|