mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
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 <justin.iurman@gmail.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Link: https://patch.msgid.link/20260602213033.12244-1-justin.iurman@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
1681cb1bde
commit
ee5aee77bc
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user