From: Justin Iurman Date: Tue, 2 Jun 2026 21:30:33 +0000 (+0200) Subject: ipv6: exthdrs: recompute network header pointer once X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=ee5aee77bcba421fd2830e5036a18c206f7c2844;p=thirdparty%2Fkernel%2Flinux.git ipv6: exthdrs: recompute network header pointer once In ip6_parse_tlv(), recompute the network header pointer once regardless of the option processed (Hbh or Dest), as missing recomputation for specific options has caused issues in the past. Signed-off-by: Justin Iurman Reviewed-by: Ido Schimmel Link: https://patch.msgid.link/20260602213033.12244-1-justin.iurman@gmail.com Signed-off-by: Jakub Kicinski --- diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c index 43f46ef9c53b..9c677eb1d1a6 100644 --- a/net/ipv6/exthdrs.c +++ b/net/ipv6/exthdrs.c @@ -178,14 +178,10 @@ static bool ip6_parse_tlv(bool hopbyhop, case IPV6_TLV_IOAM: if (!ipv6_hop_ioam(skb, off)) return false; - - nh = skb_network_header(skb); break; case IPV6_TLV_JUMBO: if (!ipv6_hop_jumbo(skb, off)) return false; - - nh = skb_network_header(skb); break; case IPV6_TLV_CALIPSO: if (!ipv6_hop_calipso(skb, off)) @@ -203,8 +199,6 @@ static bool ip6_parse_tlv(bool hopbyhop, case IPV6_TLV_HAO: if (!ipv6_dest_hao(skb, off)) return false; - - nh = skb_network_header(skb); break; #endif default: @@ -215,6 +209,9 @@ static bool ip6_parse_tlv(bool hopbyhop, } } padlen = 0; + + /* recompute the network header pointer in case it has changed */ + nh = skb_network_header(skb); } off += optlen; len -= optlen;