summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Mayer <andrea.mayer@uniroma2.it>2022-07-12 19:58:37 +0200
committerPaolo Abeni <pabeni@redhat.com>2022-07-14 10:15:15 +0200
commit4889fbd98deaf243c3baadc54e296d71c6af1eb0 (patch)
treec3b86b9d6bd0b2f456965e79343806a0af6ceab5
parentf048880fc77058d864aff5c674af7918b30f312a (diff)
downloadlinux-4889fbd98deaf243c3baadc54e296d71c6af1eb0.tar.bz2
seg6: bpf: fix skb checksum in bpf_push_seg6_encap()
Both helper functions bpf_lwt_seg6_action() and bpf_lwt_push_encap() use the bpf_push_seg6_encap() to encapsulate the packet in an IPv6 with Segment Routing Header (SRH) or insert an SRH between the IPv6 header and the payload. To achieve this result, such helper functions rely on bpf_push_seg6_encap() which, in turn, leverages seg6_do_srh_{encap,inline}() to perform the required operation (i.e. encap/inline). This patch removes the initialization of the IPv6 header payload length from bpf_push_seg6_encap(), as it is now handled properly by seg6_do_srh_{encap,inline}() to prevent corruption of the skb checksum. Fixes: fe94cc290f53 ("bpf: Add IPv6 Segment Routing helpers") Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-rw-r--r--net/core/filter.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/net/core/filter.c b/net/core/filter.c
index 5d16d66727fc..2a6a0b0ce43e 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -6158,7 +6158,6 @@ static int bpf_push_seg6_encap(struct sk_buff *skb, u32 type, void *hdr, u32 len
if (err)
return err;
- ipv6_hdr(skb)->payload_len = htons(skb->len - sizeof(struct ipv6hdr));
skb_set_transport_header(skb, sizeof(struct ipv6hdr));
return seg6_lookup_nexthop(skb, NULL, 0);