Signed-off-by: Pravin B Shelar <pshe...@nicira.com>
---
 datapath/datapath.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/datapath/datapath.c b/datapath/datapath.c
index c86c20b..acbd3bf 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -84,7 +84,7 @@ EXPORT_SYMBOL(ovs_dp_ioctl_hook);
  */
 
 /* Global list of datapaths to enable dumping them all out.
- * Protected by genl_mutex.
+ * It is RCU protected list, writes protected by genl_mutex.
  */
 static LIST_HEAD(dps);
 
@@ -1407,7 +1407,7 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct 
genl_info *info)
        if (IS_ERR(reply))
                goto err_destroy_local_port;
 
-       list_add_tail(&dp->list_node, &dps);
+       list_add_tail_rcu(&dp->list_node, &dps);
        ovs_dp_sysfs_add_dp(dp);
 
        rtnl_unlock();
@@ -1461,7 +1461,7 @@ static int ovs_dp_cmd_del(struct sk_buff *skb, struct 
genl_info *info)
                        ovs_dp_detach_port(vport);
 
        ovs_dp_sysfs_del_dp(dp);
-       list_del(&dp->list_node);
+       list_del_rcu(&dp->list_node);
        ovs_dp_detach_port(rtnl_dereference(dp->ports[OVSP_LOCAL]));
 
        /* rtnl_unlock() will wait until all the references to devices that
@@ -1544,7 +1544,7 @@ static int ovs_dp_cmd_dump(struct sk_buff *skb, struct 
netlink_callback *cb)
        int skip = cb->args[0];
        int i = 0;
 
-       list_for_each_entry(dp, &dps, list_node) {
+       list_for_each_entry_rcu(dp, &dps, list_node) {
                if (i < skip)
                        continue;
                if (ovs_dp_cmd_fill_info(dp, skb, NETLINK_CB(cb->skb).pid,
-- 
1.7.1

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to