CVE-2026-46321

tun: free page on short-frame rejection in tun_xdp_one()

HIGH
7.1
CVSS Score
Published: June 9, 2026 at 12:11 PM UTC
Updated: October 15, 2026 at 02:19 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.1
Exploit prediction
EPSS 0.1%

Description

In the Linux kernel, the following vulnerability has been resolved: tun: free page on short-frame rejection in tun_xdp_one() tun_xdp_one() returns -EINVAL on a frame shorter than ETH_HLEN without freeing the page that vhost_net_build_xdp() allocated for it. tun_sendmsg() discards that -EINVAL and still returns total_len, so vhost_tx_batch() takes the success path and never frees the page; each short frame in a batch leaks one page-frag chunk. A local process that can open /dev/net/tun and /dev/vhost-net can hit this path: it attaches a tun/tap device as the vhost-net backend and feeds TX descriptors whose length minus the virtio-net header is below ETH_HLEN. Each kick leaks the page-frag chunks for that batch, and a tight submission loop exhausts host memory and triggers an OOM panic. Free the page before returning -EINVAL, matching the XDP-program error path in the same function.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

5.10.223 ≤ v < 5.10.2595.15.164 ≤ v < 5.15.2105.4.281 ≤ v < 5.56.1.102 ≤ v < 6.1.1766.10.2 ≤ v < 6.12.936.13 ≤ v < 6.18.356.19 ≤ v < 7.0.126.6.43 ≤ v < 6.6.1436.9.12 ≤ v < 6.1032b0aaba5dbc85816898167d9b5d45a22eae82e949584807f1d797fc3078b68035450a9769eb5c35.10.2235.15.1645.4.281589382f50b4a5d90d16d8bc9dcbc0e927a3e39b26.1.1026.10.26.6.436.9.126100e0237204890269e3f934acfc50d35fd6f3197.17.1 rc17.1 rc27.1 rc37.1 rc47.1 rc58418f55302fa1d2eeb73e16e345167e545c598a5a9d1c27e2ee3b0ea5d40c105d6e728fc114470bbad6b3f622ccfb4bfedfa53b6ebd91c3d1d04f146d5ad89b7d01ed4e66fd04734fc63d6e78536692a
Vendor states this is fixed in 0a6f46a9332ad6958992d64d3b3a81a80b2ca940 (fixed)
Vendor states this is fixed in 0e8211fcf9426f5adddf32516ba0f400ceb9544d (fixed)
Vendor states this is fixed in 37a1c268c2c8090bf4dc552d732bd23ba36f8eb0 (fixed)
Vendor states this is fixed in 5b34f9e4fe2f203724a6e893d6df0316b9670057 (fixed)
Vendor states this is fixed in 69863ff2720a0e9871f1a5710f2a33a94217fee0 (fixed)
Vendor states this is fixed in 98c67be9eb9de72465a071949e84a3cdb8fab5a3 (fixed)
Vendor states this is fixed in e915445942af6dcea628bf66d6241641201a0c41 (fixed)
Vendor states this is fixed in f4feb1e20058e407cb00f45aff47f5b7e19a6bbf (fixed)
Vendor states this is fixed in 5.10.259 (unaffected)
Vendor states this is fixed in 5.15.210 (unaffected)
Affected range stops below 5.5, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.1.176 (unaffected)
Affected range stops below 6.10, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.11 (unaffected)
Vendor states this is fixed in 6.12.93 (unaffected)
Vendor states this is fixed in 6.18.35 (unaffected)
Vendor states this is fixed in 6.6.143 (unaffected)
Vendor states this is fixed in 7.0.12 (unaffected)
Vendor states this is fixed in 7.1 (unaffected)

CVSS

7.1HIGHLinux
Vector?

Quick Info

StatusMODIFIED
CWE
NVD-CWE-noinfo

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card