diff options
Diffstat (limited to 'net/openvswitch/datapath.c')
| -rw-r--r-- | net/openvswitch/datapath.c | 17 | 
1 files changed, 2 insertions, 15 deletions
| diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index 6b44fe405282..c3aec6227c91 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c @@ -335,8 +335,6 @@ static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,  			     const struct dp_upcall_info *upcall_info,  				 uint32_t cutlen)  { -	unsigned short gso_type = skb_shinfo(skb)->gso_type; -	struct sw_flow_key later_key;  	struct sk_buff *segs, *nskb;  	int err; @@ -347,21 +345,9 @@ static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,  	if (segs == NULL)  		return -EINVAL; -	if (gso_type & SKB_GSO_UDP) { -		/* The initial flow key extracted by ovs_flow_key_extract() -		 * in this case is for a first fragment, so we need to -		 * properly mark later fragments. -		 */ -		later_key = *key; -		later_key.ip.frag = OVS_FRAG_TYPE_LATER; -	} -  	/* Queue all of the segments. */  	skb = segs;  	do { -		if (gso_type & SKB_GSO_UDP && skb != segs) -			key = &later_key; -  		err = queue_userspace_packet(dp, skb, key, upcall_info, cutlen);  		if (err)  			break; @@ -1126,7 +1112,8 @@ static int ovs_nla_init_match_and_action(struct net *net,  		if (!a[OVS_FLOW_ATTR_KEY]) {  			OVS_NLERR(log,  				  "Flow key attribute not present in set flow."); -			return -EINVAL; +			error = -EINVAL; +			goto error;  		}  		*acts = get_flow_actions(net, a[OVS_FLOW_ATTR_ACTIONS], key, |