]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
net: ipv6: fix dif and sdif mismatch in raw6_icmp_error
authorLi RongQing <lirongqing@baidu.com>
Fri, 17 Jul 2026 14:32:30 +0000 (22:32 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 23 Jul 2026 15:31:44 +0000 (08:31 -0700)
commit440e274da4d1b93c7df2cb0ce893c3009dd4db55
treed571a858ac89608dece038a3c46fa47ef498ea82
parentbb0d96ebe5f4d1acccf4dc36ca7f01f9a8fa1ba1
net: ipv6: fix dif and sdif mismatch in raw6_icmp_error

In raw6_icmp_error(), raw_v6_match() is called with inet6_iif(skb) passed
to both the 'dif' and 'sdif' arguments. This is a copy-paste or typo error,
as the last argument should represent the secondary interface index (sdif).

This mismatch breaks ICMPv6 error handling for IPv6 raw sockets in VRF
(Virtual Routing and Forwarding) environments. When a raw socket is bound
to a VRF master device, raw_v6_match() fails to find a match because it is
not given the correct sdif value, causing the socket to miss relevant
ICMPv6 error notifications.

Fix this by properly passing inet6_sdif(skb) as the last argument to
raw_v6_match().

Fixes: 5108ab4bf446fa ("net: ipv6: add second dif to raw socket lookups")
Signed-off-by: Li RongQing <lirongqing@baidu.com>
Reviewed-by: Joe Damato <joe@dama.to>
Link: https://patch.msgid.link/20260717143230.1836-1-lirongqing@baidu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/raw.c