summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorZhou Qiuyue <n0ps1edzz@gmail.com>2026-10-26 12:48:08 +0800
committerDave Miller <davem@davem-thinkpadp1gen8.ibmlond.csb>2026-10-30 09:32:15 +0000
commit66dfb2cacda7faae614d688943d85e75abf7f586 (patch)
treecc3e124ee9b7befc90b54fdfc2b33281cff4efdb /include/linux
parented9179fc7228315fb745dc3b111bae446e6894d2 (diff)
ipv6: raw: fix use-after-free in rawv6_send_hdrinc()
rawv6_send_hdrinc() caches the route before handing the skb to l3mdev_ip6_out(). The VRF output path may replace skb->dst and release the original route, leaving the cached pointer stale. The function later dereferences that pointer for statistics accounting and as the output device passed to NF_HOOK(). Its RCU read-side critical section starts after l3mdev_ip6_out(), so it cannot prevent the old route from being reclaimed in between. Reload the route from the current skb destination after l3mdev_ip6_out() returns. KASAN reports a slab-use-after-free in rawv6_sendmsg(), with the route allocated by ip6_dst_alloc(), freed by dst_destroy() from rcu_core(), and the related RCU callback queued from vrf_l3_out(). Fixes: 4c1feac58e06 ("net: vrf: Flip IPv6 output path from FIB lookup hook to out hook") Cc: stable@vger.kernel.org Signed-off-by: Zhou Qiuyue <n0ps1edzz@gmail.com> Reviewed-by: Hangbin Liu <liuhangbin@kylinos.cn> Signed-off-by: Dave Miller <davem@davem-thinkpadp1gen8.ibmlond.csb>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions