summaryrefslogtreecommitdiffstats
path: root/net/openvswitch
diff options
context:
space:
mode:
authorKirill Tkhai <ktkhai@virtuozzo.com>2018-03-29 19:21:09 +0300
committerDavid S. Miller <davem@davemloft.net>2018-03-29 13:47:54 -0400
commitec9c780925c57588637e1dbd8650d294107311c0 (patch)
tree82ab9ffcb134c75ed82d5f8e86c86e6d76318f41 /net/openvswitch
parent350311aab4c0b2477f9cf3fb03cef2e4cd6c3b18 (diff)
downloadlinux-stable-ec9c780925c57588637e1dbd8650d294107311c0.tar.gz
linux-stable-ec9c780925c57588637e1dbd8650d294107311c0.tar.bz2
linux-stable-ec9c780925c57588637e1dbd8650d294107311c0.zip
ovs: Remove rtnl_lock() from ovs_exit_net()
Here we iterate for_each_net() and removes vport from alive net to the exiting net. ovs_net::dps are protected by ovs_mutex(), and the others, who change it (ovs_dp_cmd_new(), __dp_destroy()) also take it. The same with datapath::ports list. So, we remove rtnl_lock() here. Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch')
-rw-r--r--net/openvswitch/datapath.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 9746ee30a99b..015e24e08909 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -2363,12 +2363,10 @@ static void __net_exit ovs_exit_net(struct net *dnet)
list_for_each_entry_safe(dp, dp_next, &ovs_net->dps, list_node)
__dp_destroy(dp);
- rtnl_lock();
down_read(&net_rwsem);
for_each_net(net)
list_vports_from_net(net, dnet, &head);
up_read(&net_rwsem);
- rtnl_unlock();
/* Detach all vports from given namespace. */
list_for_each_entry_safe(vport, vport_next, &head, detach_list) {