PT-2026-86196 · Linux · Linux
CVE-2026-80905
·
Published
2026-09-04
·
Updated
2026-09-04
None
No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
net: tap: fix wrong transport header when sending VLAN-tagged frame
In tap get user xdp(), when processing a VLAN-tagged frame (e.g.
ETH P 8021Q), skb set network header() is called first to advance
network header past the VLAN tag to the inner protocol header.
skb probe transport header() is then called with skb->protocol still
set to ETH P 8021Q, while nhoff (derived from skb network offset())
already points past the VLAN tag to the inner protocol header.
In skb flow dissect(), proto is initialized to ETH P 8021Q and nhoff
points past the VLAN tag. When the dissector hits case ETH P 8021Q, it
reads a struct vlan hdr at the current nhoff via skb header pointer(),
but that offset contains the inner protocol header (e.g. an IP header).
The bytes are misinterpreted as a VLAN header, yielding a garbage
encapsulated EtherType that matches no known protocol. The dissector
returns false, so skb probe transport header() never calls
skb set transport header(), leaving transport header at its uninitialized
sentinel value (~0U).
Move skb set network header() to after skb probe transport header(). At
the time skb probe transport header() is called, network header still
points to the VLAN header (offset ETH HLEN), so nhoff is correct and the
flow dissector can parse the VLAN header, extract the inner EtherType,
and advance nhoff to the inner protocol header, allowing transport header
to be set correctly.
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
Linux