X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=datapath%2Fdatapath.c;h=f496509ecbf116895e43aec76ebb1255040bb30e;hb=b05dd42a168e0e028748f8de7d4a63b761b2d687;hp=f045fe4b515a4ebf344d416d1e1d1166c623adcb;hpb=ce7f31f3119565b17615bf6969709aff4bbe66de;p=cascardo%2Fovs.git diff --git a/datapath/datapath.c b/datapath/datapath.c index f045fe4b5..f496509ec 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -862,11 +862,8 @@ static int ovs_flow_cmd_new_or_set(struct sk_buff *skb, struct genl_info *info) goto err_unlock_ovs; /* The unmasked key has to be the same for flow updates. */ - error = -EINVAL; - if (!ovs_flow_cmp_unmasked_key(flow, &match)) { - OVS_NLERR("Flow modification message rejected, unmasked key does not match.\n"); + if (!ovs_flow_cmp_unmasked_key(flow, &match)) goto err_unlock_ovs; - } /* Update actions. */ old_acts = ovsl_dereference(flow->sf_acts); @@ -1767,11 +1764,12 @@ static int ovs_vport_cmd_dump(struct sk_buff *skb, struct netlink_callback *cb) int bucket = cb->args[0], skip = cb->args[1]; int i, j = 0; + rcu_read_lock(); dp = get_dp(sock_net(skb->sk), ovs_header->dp_ifindex); - if (!dp) + if (!dp) { + rcu_read_unlock(); return -ENODEV; - - rcu_read_lock(); + } for (i = bucket; i < DP_VPORT_HASH_BUCKETS; i++) { struct vport *vport;