Skip to content

Commit

Permalink
net: Teach vlans to cleanup as a pernet subsystem
Browse files Browse the repository at this point in the history
Take advantage of the fact that an explicit rtnl_kill_links is
unnecessary (and skipping it improves batching), as network namespace
exit calls dellink on all remaining virtual devices, and
rtnl_link_unregister calls dellink on all outstanding devices in that
network namespace.  To do this we need to leave the vlan proc
directories in place until after network device exit time, which is
done by using register_pernet_subsys instead of
register_pernet_device.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric W. Biederman authored and David S. Miller committed Dec 3, 2009
1 parent 650de8d commit 91e2ff3
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions net/8021q/vlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -698,8 +698,6 @@ static int vlan_init_net(struct net *net)

static void vlan_exit_net(struct net *net)
{
rtnl_kill_links(net, &vlan_link_ops);

vlan_proc_cleanup(net);
}

Expand All @@ -717,7 +715,7 @@ static int __init vlan_proto_init(void)
pr_info("%s v%s %s\n", vlan_fullname, vlan_version, vlan_copyright);
pr_info("All bugs added by %s\n", vlan_buggyright);

err = register_pernet_device(&vlan_net_ops);
err = register_pernet_subsys(&vlan_net_ops);
if (err < 0)
goto err0;

Expand All @@ -742,7 +740,7 @@ static int __init vlan_proto_init(void)
err3:
unregister_netdevice_notifier(&vlan_notifier_block);
err2:
unregister_pernet_device(&vlan_net_ops);
unregister_pernet_subsys(&vlan_net_ops);
err0:
return err;
}
Expand All @@ -762,7 +760,7 @@ static void __exit vlan_cleanup_module(void)
for (i = 0; i < VLAN_GRP_HASH_SIZE; i++)
BUG_ON(!hlist_empty(&vlan_group_hash[i]));

unregister_pernet_device(&vlan_net_ops);
unregister_pernet_subsys(&vlan_net_ops);
rcu_barrier(); /* Wait for completion of call_rcu()'s */

vlan_gvrp_uninit();
Expand Down

0 comments on commit 91e2ff3

Please sign in to comment.