Change ovs_dp_cmd_get() and ovs_flow_cmd_get() to only take the rcu_read_lock(), instead of ovs_lock(), as nothing need to be changed. This was done by ovs_vport_cmd_get() already.
Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com> --- datapath/datapath.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/datapath/datapath.c b/datapath/datapath.c index 7992330..bafe486 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -918,29 +918,27 @@ static int ovs_flow_cmd_get(struct sk_buff *skb, struct genl_info *info) if (err) return err; - ovs_lock(); + rcu_read_lock(); dp = get_dp(sock_net(skb->sk), ovs_header->dp_ifindex); if (!dp) { err = -ENODEV; goto unlock; } - flow = ovs_flow_tbl_lookup(&dp->table, &key); if (!flow || !ovs_flow_cmp_unmasked_key(flow, &match)) { err = -ENOENT; goto unlock; } - reply = ovs_flow_cmd_build_info(flow, dp, info, OVS_FLOW_CMD_NEW); if (IS_ERR(reply)) { err = PTR_ERR(reply); goto unlock; } + rcu_read_unlock(); - ovs_unlock(); return genlmsg_reply(reply, info); unlock: - ovs_unlock(); + rcu_read_unlock(); return err; } @@ -1384,24 +1382,23 @@ static int ovs_dp_cmd_get(struct sk_buff *skb, struct genl_info *info) struct datapath *dp; int err; - ovs_lock(); + rcu_read_lock(); dp = lookup_datapath(sock_net(skb->sk), info->userhdr, info->attrs); if (IS_ERR(dp)) { err = PTR_ERR(dp); goto unlock; } - reply = ovs_dp_cmd_build_info(dp, info, OVS_DP_CMD_NEW); if (IS_ERR(reply)) { err = PTR_ERR(reply); goto unlock; } + rcu_read_unlock(); - ovs_unlock(); return genlmsg_reply(reply, info); unlock: - ovs_unlock(); + rcu_read_unlock(); return err; } @@ -1741,13 +1738,11 @@ static int ovs_vport_cmd_get(struct sk_buff *skb, struct genl_info *info) err = PTR_ERR(vport); if (IS_ERR(vport)) goto exit_unlock; - reply = ovs_vport_cmd_build_info(vport, info->snd_portid, info->snd_seq, OVS_VPORT_CMD_NEW); err = PTR_ERR(reply); if (IS_ERR(reply)) goto exit_unlock; - rcu_read_unlock(); return genlmsg_reply(reply, info); -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev