Message ID | 20240425090149.1359547-2-pablo@netfilter.org (mailing list archive) |
---|---|
State | Accepted |
Commit | e10d3ba4d434ed172914617ed8d74bd411421193 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,1/2] ipvs: Fix checksumming on GSO of SCTP packets | expand |
Hello: This series was applied to netdev/net.git (main) by Pablo Neira Ayuso <pablo@netfilter.org>: On Thu, 25 Apr 2024 11:01:48 +0200 you wrote: > From: Ismael Luceno <iluceno@suse.de> > > It was observed in the wild that pairs of consecutive packets would leave > the IPVS with the same wrong checksum, and the issue only went away when > disabling GSO. > > IPVS needs to avoid computing the SCTP checksum when using GSO. > > [...] Here is the summary with links: - [net,1/2] ipvs: Fix checksumming on GSO of SCTP packets https://git.kernel.org/netdev/net/c/e10d3ba4d434 - [net,2/2] netfilter: nf_tables: honor table dormant flag from netdev release event path https://git.kernel.org/netdev/net/c/8e30abc9ace4 You are awesome, thank you!
diff --git a/net/netfilter/ipvs/ip_vs_proto_sctp.c b/net/netfilter/ipvs/ip_vs_proto_sctp.c index a0921adc31a9..1e689c714127 100644 --- a/net/netfilter/ipvs/ip_vs_proto_sctp.c +++ b/net/netfilter/ipvs/ip_vs_proto_sctp.c @@ -126,7 +126,8 @@ sctp_snat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp, if (sctph->source != cp->vport || payload_csum || skb->ip_summed == CHECKSUM_PARTIAL) { sctph->source = cp->vport; - sctp_nat_csum(skb, sctph, sctphoff); + if (!skb_is_gso(skb) || !skb_is_gso_sctp(skb)) + sctp_nat_csum(skb, sctph, sctphoff); } else { skb->ip_summed = CHECKSUM_UNNECESSARY; } @@ -174,7 +175,8 @@ sctp_dnat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp, (skb->ip_summed == CHECKSUM_PARTIAL && !(skb_dst(skb)->dev->features & NETIF_F_SCTP_CRC))) { sctph->dest = cp->dport; - sctp_nat_csum(skb, sctph, sctphoff); + if (!skb_is_gso(skb) || !skb_is_gso_sctp(skb)) + sctp_nat_csum(skb, sctph, sctphoff); } else if (skb->ip_summed != CHECKSUM_PARTIAL) { skb->ip_summed = CHECKSUM_UNNECESSARY; }