Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e008b5fc authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller
Browse files

net: Simplfy default_device_exit and improve batching.



- Defer dellink to net_cleanup() allowing for batching.
- Fix comment.
- Use for_each_netdev_safe again as dev_change_net_namespace touches
  at most one network device (unlike veth dellink).

Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 999b6d39
Loading
Loading
Loading
Loading
+6 −10
Original line number Diff line number Diff line
@@ -5736,14 +5736,13 @@ static struct pernet_operations __net_initdata netdev_net_ops = {

static void __net_exit default_device_exit(struct net *net)
{
	struct net_device *dev;
	struct net_device *dev, *aux;
	/*
	 * Push all migratable of the network devices back to the
	 * Push all migratable network devices back to the
	 * initial network namespace
	 */
	rtnl_lock();
restart:
	for_each_netdev(net, dev) {
	for_each_netdev_safe(net, dev, aux) {
		int err;
		char fb_name[IFNAMSIZ];

@@ -5751,11 +5750,9 @@ static void __net_exit default_device_exit(struct net *net)
		if (dev->features & NETIF_F_NETNS_LOCAL)
			continue;

		/* Delete virtual devices */
		if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink) {
			dev->rtnl_link_ops->dellink(dev, NULL);
			goto restart;
		}
		/* Leave virtual devices for the generic cleanup */
		if (dev->rtnl_link_ops)
			continue;

		/* Push remaing network devices to init_net */
		snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);
@@ -5765,7 +5762,6 @@ static void __net_exit default_device_exit(struct net *net)
				__func__, dev->name, err);
			BUG();
		}
		goto restart;
	}
	rtnl_unlock();
}