vxlan: exit_net cleanup checks added
authorVasily Averin <vvs@virtuozzo.com>
Sun, 12 Nov 2017 19:28:10 +0000 (22:28 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Nov 2017 06:45:52 +0000 (15:45 +0900)
Be sure that sock_list array initialized in net_init hook was return
to initial state

Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c

index d7c49cf1d5e91e2f962d499c4b88df87eec6dacd..c02d85651eba9134d9c615e85adeae702850c650 100644 (file)
@@ -3704,6 +3704,7 @@ static void __net_exit vxlan_exit_net(struct net *net)
        struct vxlan_net *vn = net_generic(net, vxlan_net_id);
        struct vxlan_dev *vxlan, *next;
        struct net_device *dev, *aux;
+       unsigned int h;
        LIST_HEAD(list);
 
        rtnl_lock();
@@ -3723,6 +3724,9 @@ static void __net_exit vxlan_exit_net(struct net *net)
 
        unregister_netdevice_many(&list);
        rtnl_unlock();
+
+       for (h = 0; h < PORT_HASH_SIZE; ++h)
+               WARN_ON_ONCE(!hlist_empty(&vn->sock_list[h]));
 }
 
 static struct pernet_operations vxlan_net_ops = {