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