return 0;
 }
 
-static void bareudp_destroy_tunnels(struct net *net, struct list_head *head)
+static void __net_exit bareudp_exit_rtnl_net(struct net *net,
+                                            struct list_head *dev_kill_list)
 {
        struct bareudp_net *bn = net_generic(net, bareudp_net_id);
        struct bareudp_dev *bareudp, *next;
 
        list_for_each_entry_safe(bareudp, next, &bn->bareudp_list, next)
-               unregister_netdevice_queue(bareudp->dev, head);
-}
-
-static void __net_exit bareudp_exit_batch_rtnl(struct list_head *net_list,
-                                              struct list_head *dev_kill_list)
-{
-       struct net *net;
-
-       list_for_each_entry(net, net_list, exit_list)
-               bareudp_destroy_tunnels(net, dev_kill_list);
+               bareudp_dellink(bareudp->dev, dev_kill_list);
 }
 
 static struct pernet_operations bareudp_net_ops = {
        .init = bareudp_init_net,
-       .exit_batch_rtnl = bareudp_exit_batch_rtnl,
+       .exit_rtnl = bareudp_exit_rtnl_net,
        .id   = &bareudp_net_id,
        .size = sizeof(struct bareudp_net),
 };