Commit bf14f492 authored by Xin Long's avatar Xin Long Committed by David S. Miller
Browse files

openvswitch: delete the unncessary skb_pull_rcsum call in ovs_ct_nat_execute



The calls to ovs_ct_nat_execute() are as below:

  ovs_ct_execute()
    ovs_ct_lookup()
      __ovs_ct_lookup()
        ovs_ct_nat()
          ovs_ct_nat_execute()
    ovs_ct_commit()
      __ovs_ct_lookup()
        ovs_ct_nat()
          ovs_ct_nat_execute()

and since skb_pull_rcsum() and skb_push_rcsum() are already
called in ovs_ct_execute(), there's no need to do it again
in ovs_ct_nat_execute().

Reviewed-by: default avatarSaeed Mahameed <saeed@kernel.org>
Acked-by: default avatarAaron Conole <aconole@redhat.com>
Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a2d40ce7
Loading
Loading
Loading
Loading
+6 −11
Original line number Diff line number Diff line
@@ -735,10 +735,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
			      const struct nf_nat_range2 *range,
			      enum nf_nat_manip_type maniptype, struct sw_flow_key *key)
{
	int hooknum, nh_off, err = NF_ACCEPT;

	nh_off = skb_network_offset(skb);
	skb_pull_rcsum(skb, nh_off);
	int hooknum, err = NF_ACCEPT;

	/* See HOOK2MANIP(). */
	if (maniptype == NF_NAT_MANIP_SRC)
@@ -755,7 +752,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
			if (!nf_nat_icmp_reply_translation(skb, ct, ctinfo,
							   hooknum))
				err = NF_DROP;
			goto push;
			goto out;
		} else if (IS_ENABLED(CONFIG_IPV6) &&
			   skb->protocol == htons(ETH_P_IPV6)) {
			__be16 frag_off;
@@ -770,7 +767,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
								     hooknum,
								     hdrlen))
					err = NF_DROP;
				goto push;
				goto out;
			}
		}
		/* Non-ICMP, fall thru to initialize if needed. */
@@ -788,7 +785,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
				? nf_nat_setup_info(ct, range, maniptype)
				: nf_nat_alloc_null_binding(ct, hooknum);
			if (err != NF_ACCEPT)
				goto push;
				goto out;
		}
		break;

@@ -798,13 +795,11 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,

	default:
		err = NF_DROP;
		goto push;
		goto out;
	}

	err = nf_nat_packet(ct, ctinfo, hooknum, skb);
push:
	skb_push_rcsum(skb, nh_off);

out:
	/* Update the flow key if NAT successful. */
	if (err == NF_ACCEPT)
		ovs_nat_update_key(key, skb, maniptype);