|
@@ -922,15 +922,10 @@ static int vrf_del_slave(struct net_device *dev, struct net_device *port_dev)
|
|
|
static void vrf_dev_uninit(struct net_device *dev)
|
|
|
{
|
|
|
struct net_vrf *vrf = netdev_priv(dev);
|
|
|
- struct net_device *port_dev;
|
|
|
- struct list_head *iter;
|
|
|
|
|
|
vrf_rtable_release(dev, vrf);
|
|
|
vrf_rt6_release(dev, vrf);
|
|
|
|
|
|
- netdev_for_each_lower_dev(dev, port_dev, iter)
|
|
|
- vrf_del_slave(dev, port_dev);
|
|
|
-
|
|
|
free_percpu(dev->dstats);
|
|
|
dev->dstats = NULL;
|
|
|
}
|
|
@@ -1386,6 +1381,12 @@ static int vrf_validate(struct nlattr *tb[], struct nlattr *data[],
|
|
|
|
|
|
static void vrf_dellink(struct net_device *dev, struct list_head *head)
|
|
|
{
|
|
|
+ struct net_device *port_dev;
|
|
|
+ struct list_head *iter;
|
|
|
+
|
|
|
+ netdev_for_each_lower_dev(dev, port_dev, iter)
|
|
|
+ vrf_del_slave(dev, port_dev);
|
|
|
+
|
|
|
unregister_netdevice_queue(dev, head);
|
|
|
}
|
|
|
|