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

net: atlantic: free stranded TX buffers on ring deinit

aq_vec_deinit() drains the TX rings with a single aq_ring_tx_clean()
call, which frees at most AQ_CFG_TX_CLEAN_BUDGET (256) descriptors and
stops at hw_head, which no longer moves once aq_vec_stop() has stopped
the hardware and NAPI. Completed descriptors beyond the budget and
everything still posted in [hw_head, sw_tail) keep their skb or
xdp_frame when the interface goes down: aq_vec_ring_free() then frees
the buffer ring and the references are lost for good.

Today this is a silent memory leak on every interface down under
TX/XDP_TX load. With the conversion of the RX path to page_pool posted
for net-next it becomes much more visible: XDP_TX frames carry fragment
references on the RX ring's page_pool, so a single stranded frame keeps
the pool's inflight count above zero forever. page_pool_destroy() then
never completes, the pool is leaked together with its pages, and
"page_pool_release_retry() stalled pool shutdown" is warned every 60
seconds from that point on, on every ifdown, XDP detach or ring resize
under XDP_TX load.

Bring back aq_ring_tx_deinit() as it was before the removal and use it
for teardown again, with one extension: TX rings can hold xdp_frames
nowadays, so release those too. They are returned with
xdp_return_frame() since this runs in process context.
Published: 2026-08-22
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The atlantic network driver in the Linux kernel contains a silent memory leak that occurs when a network interface is brought down under TX/XDP_TX load; stranded transmit descriptors that are not freed retain skb or xdp_frame references, preventing the page pool from shutting down and causing memory to be consumed until the system exhausts available memory, which can destabilize the kernel and affect overall system availability.

Affected Systems

This issue affects Linux kernel installations that include the atlantic driver; specific version information is not provided in the CVE data, so all deployments of the driver during the period when the code change was removed are potentially impacted.

Risk and Exploitability

The vulnerability does not have an assigned EPSS score; it is not listed in CISA’s KEV catalog. Exploit requires triggering interface shutdown events or XDP detach actions under high TX load, which typically needs privileged access, but could be abused in environments where such actions are common. The resulting memory exhaustion can lead to denial of service, but the lack of remote code execution reduces overall threat level.

Generated by OpenCVE AI on August 22, 2026 at 16:39 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel update that restores the original aq_ring_tx_deinit() logic and properly releases xdp_frames during driver teardown.
  • If an update is not immediately available, apply the upstream patch that re‑introduces aq_ring_tx_deinit() and add an explicit call to xdp_return_frame() for each queued XDP frame before the ring is freed.
  • After applying a fix, monitor system logs for the repeated warning 'page_pool_release_retry() stalled pool shutdown'; continued warnings suggest an incomplete fix and warrant further investigation.

Generated by OpenCVE AI on August 22, 2026 at 16:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 22 Aug 2026 17:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-401

Sat, 22 Aug 2026 15:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: net: atlantic: free stranded TX buffers on ring deinit aq_vec_deinit() drains the TX rings with a single aq_ring_tx_clean() call, which frees at most AQ_CFG_TX_CLEAN_BUDGET (256) descriptors and stops at hw_head, which no longer moves once aq_vec_stop() has stopped the hardware and NAPI. Completed descriptors beyond the budget and everything still posted in [hw_head, sw_tail) keep their skb or xdp_frame when the interface goes down: aq_vec_ring_free() then frees the buffer ring and the references are lost for good. Today this is a silent memory leak on every interface down under TX/XDP_TX load. With the conversion of the RX path to page_pool posted for net-next it becomes much more visible: XDP_TX frames carry fragment references on the RX ring's page_pool, so a single stranded frame keeps the pool's inflight count above zero forever. page_pool_destroy() then never completes, the pool is leaked together with its pages, and "page_pool_release_retry() stalled pool shutdown" is warned every 60 seconds from that point on, on every ifdown, XDP detach or ring resize under XDP_TX load. Bring back aq_ring_tx_deinit() as it was before the removal and use it for teardown again, with one extension: TX rings can hold xdp_frames nowadays, so release those too. They are returned with xdp_return_frame() since this runs in process context.
Title net: atlantic: free stranded TX buffers on ring deinit
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-08-22T15:32:06.467Z

Reserved: 2026-08-15T05:44:03.921Z

Link: CVE-2026-74623

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-22T16:16:35.157

Modified: 2026-08-22T16:16:35.157

Link: CVE-2026-74623

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T18:15:03Z

Weaknesses
  • CWE-401

    Missing Release of Memory after Effective Lifetime