Signed-off-by: Pravin B Shelar <[email protected]>
---
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
[email protected]
http://openvswitch.org/mailman/listinfo/dev