aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/vrf.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/vrf.c')
-rw-r--r--drivers/net/vrf.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index f4d0054981c6..8a1eaf3c302a 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -922,15 +922,10 @@ static int vrf_del_slave(struct net_device *dev, struct net_device *port_dev)
922static void vrf_dev_uninit(struct net_device *dev) 922static void vrf_dev_uninit(struct net_device *dev)
923{ 923{
924 struct net_vrf *vrf = netdev_priv(dev); 924 struct net_vrf *vrf = netdev_priv(dev);
925 struct net_device *port_dev;
926 struct list_head *iter;
927 925
928 vrf_rtable_release(dev, vrf); 926 vrf_rtable_release(dev, vrf);
929 vrf_rt6_release(dev, vrf); 927 vrf_rt6_release(dev, vrf);
930 928
931 netdev_for_each_lower_dev(dev, port_dev, iter)
932 vrf_del_slave(dev, port_dev);
933
934 free_percpu(dev->dstats); 929 free_percpu(dev->dstats);
935 dev->dstats = NULL; 930 dev->dstats = NULL;
936} 931}
@@ -1386,6 +1381,12 @@ static int vrf_validate(struct nlattr *tb[], struct nlattr *data[],
1386 1381
1387static void vrf_dellink(struct net_device *dev, struct list_head *head) 1382static void vrf_dellink(struct net_device *dev, struct list_head *head)
1388{ 1383{
1384 struct net_device *port_dev;
1385 struct list_head *iter;
1386
1387 netdev_for_each_lower_dev(dev, port_dev, iter)
1388 vrf_del_slave(dev, port_dev);
1389
1389 unregister_netdevice_queue(dev, head); 1390 unregister_netdevice_queue(dev, head);
1390} 1391}
1391 1392