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

Reply via email to