|
@@ -161,9 +161,10 @@ static void del_nbp(struct net_bridge_port *p)
|
|
|
call_rcu(&p->rcu, destroy_nbp_rcu);
|
|
|
}
|
|
|
|
|
|
-/* called with RTNL */
|
|
|
-static void del_br(struct net_bridge *br, struct list_head *head)
|
|
|
+/* Delete bridge device */
|
|
|
+void br_dev_delete(struct net_device *dev, struct list_head *head)
|
|
|
{
|
|
|
+ struct net_bridge *br = netdev_priv(dev);
|
|
|
struct net_bridge_port *p, *n;
|
|
|
|
|
|
list_for_each_entry_safe(p, n, &br->port_list, list) {
|
|
@@ -268,7 +269,7 @@ int br_del_bridge(struct net *net, const char *name)
|
|
|
}
|
|
|
|
|
|
else
|
|
|
- del_br(netdev_priv(dev), NULL);
|
|
|
+ br_dev_delete(dev, NULL);
|
|
|
|
|
|
rtnl_unlock();
|
|
|
return ret;
|
|
@@ -449,7 +450,7 @@ void __net_exit br_net_exit(struct net *net)
|
|
|
rtnl_lock();
|
|
|
for_each_netdev(net, dev)
|
|
|
if (dev->priv_flags & IFF_EBRIDGE)
|
|
|
- del_br(netdev_priv(dev), &list);
|
|
|
+ br_dev_delete(dev, &list);
|
|
|
|
|
|
unregister_netdevice_many(&list);
|
|
|
rtnl_unlock();
|