CVE-2026-80925
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
09/09/2026
Last modified:
03/10/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
vlan: fix skb_under_panic and races when toggling HW VLAN offload<br />
<br />
Toggling hardware VLAN TX offload (NETIF_F_HW_VLAN_CTAG_TX or<br />
NETIF_F_HW_VLAN_STAG_TX) on a lower device invokes vlan_transfer_features(),<br />
which dynamically changed vlandev->hard_header_len.<br />
<br />
This causes two issues:<br />
1. Lockless TX paths (e.g. packet_snd in af_packet.c, ip6_finish_output2)<br />
read dev->hard_header_len without holding RTNL lock. Mutating<br />
hard_header_len dynamically under RTNL creates a data race where upper<br />
layers reserve insufficient headroom based on a stale hard_header_len,<br />
resulting in skb_under_panic when vlan_dev_hard_header() is called.<br />
2. In addition, vlan_transfer_features() updated hard_header_len without<br />
updating header_ops, causing a mismatch between allocated headroom<br />
and header creation.<br />
<br />
Always setting dev->hard_header_len = real_dev->hard_header_len and<br />
dev->needed_headroom = real_dev->needed_headroom + VLAN_HLEN unconditionally<br />
ensures:<br />
- dev->hard_header_len remains 100% static and immutable at real_dev->hard_header_len,<br />
eliminating all dynamic runtime updates and data races on hard_header_len.<br />
- Upper layers allocating skbs via LL_RESERVED_SPACE() will always reserve<br />
sufficient headroom for software VLAN tag insertion (real_dev->hard_header_len +<br />
real_dev->needed_headroom + VLAN_HLEN).<br />
- vlandev inherits real_dev->needed_tailroom so underlying trailer/padding/ICV<br />
requirements are honored.<br />
- AF_PACKET SOCK_RAW network header offsets remain correctly aligned at<br />
real_dev->hard_header_len.<br />
- vlan_header_ops is used unconditionally.<br />
<br />
Note to stable teams: Make sure to backport these commits:<br />
<br />
e16e960d55a4 ("ipvlan: inherit needed_headroom and needed_tailroom from phy_dev")<br />
cef51860becd ("macvlan: inherit needed_headroom and needed_tailroom from lowerdev")
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/1517d1996b5236fe69eccd9d253f725e06996eb1
- https://git.kernel.org/stable/c/447cbe95ebb95392b5d8f6a01c0556826919ce23
- https://git.kernel.org/stable/c/a29f3b884ba50217e6f50414f568073221e2bb07
- https://git.kernel.org/stable/c/b30fe4de285b9bdaf9508740191f69f7cd83b8fa
- https://git.kernel.org/stable/c/b38d7a4bc9c17e1d437696da25f9fbc286614d9d


