Description
In the Linux kernel, the following vulnerability has been resolved:

net/packet: defer vmalloc TX_RING free until skbs finish

AF_PACKET TX_RING skbs keep a raw pointer to their ring frame. The skb
page references preserve page-backed ring blocks after pg_vec is freed,
but they do not preserve a vmalloc mapping.

tpacket_destruct_skb() currently drops the pending reference before
writing the timestamp and TP_STATUS_AVAILABLE to the frame. Move the
decrement after those stores. The smp_wmb() in __packet_set_status()
orders the frame stores before the decrement.

Also recheck pending TX frames under pg_vec_lock before non-closing
ring replacement, so a racing send cannot add a pending skb between
the initial check and the ring swap.

Ring allocation can produce a mixture of page-backed and vmalloc-backed
blocks. Allocate deferred-work storage during TX ring setup when the
first vmalloc-backed block is encountered, and keep its pointer in the
pg_vec allocation header. If allocation fails, return -ENOMEM from ring
setup. On socket close, a non-NULL pointer identifies a vmalloc-backed
vector without a scan. If TX skbs remain, defer the whole vector to
system_long_wq.

After pg_vec is detached, a late destructor can skip the pending
decrement. Use socket write-memory accounting as the deferred lifetime
gate instead: an skb remains charged through its final sock_wfree(),
after all ring-frame accesses. The delayed work retains a socket
reference and reschedules itself until no TX skbs remain.

Move pending_refcnt release to packet_sock_destruct() so late skb
destructors and deferred cleanup can safely use it after
packet_release(). Page-backed teardown remains synchronous, and no lock
is added to the TX completion hot path.
Published: 2026-09-04
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: kernel memory corruption
Action: Patch Immediately
AI Analysis

Impact

In the Linux kernel, the AF_PACKET TX_RING teardown logic can free a memory region that socket buffers still reference. The skb keeps a raw pointer to the ring frame but does not maintain a vmalloc mapping after pg_vec is released, resulting in a use‑after‑free scenario. This race can corrupt kernel memory and potentially allow privilege escalation or denial of service. The flaw is a classic memory corruption vulnerability, classified as CWE‑416.

Affected Systems

Systems running Linux kernel versions that lack the commit that defers the vmalloc TX_RING free until the skbs complete are affected. The patch is incorporated in recent stable releases of the kernel, specifically in commits such as 0189dce07db2dc059ae0570e06758ec4233c6e11. Any host using older kernels or custom builds that omit this change remains vulnerable.

Risk and Exploitability

The CVSS score is not published in the advisory, but the nature of a use‑after‑free in kernel space is generally considered high to critical severity. No EPSS score is available and the vulnerability is not listed in CISA KEV, indicating no known mass exploitation. Exploitation would require an attacker to create a race on AF_PACKET sockets, which could be achieved locally or over the network if packet sockets are exposed. While there are no public exploits yet, the potential impact—kernel memory corruption leading to privilege escalation—makes it a high‑impact flaw.

Generated by OpenCVE AI on September 4, 2026 at 21:39 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the system to a Linux kernel version that includes the AF_PACKET TX_RING fix, for example by installing the latest kernel package provided by your distribution (e.g., apt‑get install linux‑image-$(uname -r) or yum update kernel).
  • If an immediate kernel upgrade is not possible, download the patch identified by the commit hash 0189dce07db2dc059ae0570e06758ec4233c6e11 from the Linux kernel source website, apply it to your local kernel source tree, rebuild the kernel, reinstall the new kernel image, and install the corresponding modules.
  • Reboot the machine into the updated kernel and verify that the running kernel contains the patch by checking the commit log (e.g., git log | grep 0189dce07db2dc059ae0570e06758ec4233c6e11) or by observing /proc/version.

Generated by OpenCVE AI on September 4, 2026 at 21:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 21 Sep 2026 13:30:00 +0000


Fri, 11 Sep 2026 10:15:00 +0000


Fri, 04 Sep 2026 16:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: net/packet: defer vmalloc TX_RING free until skbs finish AF_PACKET TX_RING skbs keep a raw pointer to their ring frame. The skb page references preserve page-backed ring blocks after pg_vec is freed, but they do not preserve a vmalloc mapping. tpacket_destruct_skb() currently drops the pending reference before writing the timestamp and TP_STATUS_AVAILABLE to the frame. Move the decrement after those stores. The smp_wmb() in __packet_set_status() orders the frame stores before the decrement. Also recheck pending TX frames under pg_vec_lock before non-closing ring replacement, so a racing send cannot add a pending skb between the initial check and the ring swap. Ring allocation can produce a mixture of page-backed and vmalloc-backed blocks. Allocate deferred-work storage during TX ring setup when the first vmalloc-backed block is encountered, and keep its pointer in the pg_vec allocation header. If allocation fails, return -ENOMEM from ring setup. On socket close, a non-NULL pointer identifies a vmalloc-backed vector without a scan. If TX skbs remain, defer the whole vector to system_long_wq. After pg_vec is detached, a late destructor can skip the pending decrement. Use socket write-memory accounting as the deferred lifetime gate instead: an skb remains charged through its final sock_wfree(), after all ring-frame accesses. The delayed work retains a socket reference and reschedules itself until no TX skbs remain. Move pending_refcnt release to packet_sock_destruct() so late skb destructors and deferred cleanup can safely use it after packet_release(). Page-backed teardown remains synchronous, and no lock is added to the TX completion hot path.
Title net/packet: defer vmalloc TX_RING free until skbs finish
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-21T13:14:13.173Z

Reserved: 2026-08-26T14:34:25.796Z

Link: CVE-2026-80841

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-04T16:18:12.607

Modified: 2026-09-21T14:17:20.800

Link: CVE-2026-80841

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-05T01:00:05Z

Weaknesses

No weakness.