Skip to content

Commit

Permalink
openvswitch: delete the unncessary skb_pull_rcsum call in ovs_ct_nat_…
Browse files Browse the repository at this point in the history
…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: Saeed Mahameed <saeed@kernel.org>
Acked-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Xin Long authored and David S. Miller committed Dec 12, 2022
1 parent a2d40ce commit bf14f49
Showing 1 changed file with 6 additions and 11 deletions.
17 changes: 6 additions & 11 deletions net/openvswitch/conntrack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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;
Expand All @@ -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. */
Expand All @@ -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;

Expand All @@ -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);
Expand Down

0 comments on commit bf14f49

Please sign in to comment.