CVE-2026-72408: geneve: gate GRO hint in geneve_gro_complete() on gs->gro_hint
In the Linux kernel, the following vulnerability has been resolved:
geneve: gate GRO hint in genevegrocomplete() on gs->grohint
genevegroreceive() reads the GRO hint through geneveskgrohintoff(), which honours it only when the socket enabled IFLAGENEVEGROHINT (gs->grohint). genevegrocomplete() instead calls the low-level geneveoptgrohintoff() and acts on the hint unconditionally.
On a tunnel without the hint, receive aggregates the frames as plain ETHPTEB while complete still honours an attacker-supplied hint option: it inflates ghlen by grohint->nestedhdrlen (u8) and redirects the dispatch type, so the inner grocomplete handler runs at nhoff + ghlen, an offset receive never pulled nor validated, reading out of bounds of the skb head:
BUG: KASAN: slab-out-of-bounds in ipv6grocomplete (net/ipv6/ip6offload.c:196) Read of size 1 at addr ffff88800fe91980 by task exploit/153 ipv6grocomplete (net/ipv6/ip6offload.c:196) genevegrocomplete (drivers/net/geneve.c:965) udpgrocomplete (net/ipv4/udpoffload.c:940) inetgrocomplete (net/ipv4/afinet.c:1621) groflush (net/core/gro.c:306)
Gate the complete path on gs->grohint too via geneveskgrohintoff(), so both paths agree. Tunnels that enable the hint are unaffected.