CVE-2026-74623

net: atlantic: free stranded TX buffers on ring deinit

State
Published
Severity
Not scored
Published
Aug 22, 2026
Updated
Aug 23, 2026
Reserved
Aug 15, 2026

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before a14ceebd13bf857bfca052bc5a6bd49e737912beAffected
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before 4f1c20873f70b4b22ef86dc38dad1fda8e169bcdAffected
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before 307d80193b4a4a75b8dc4e0d3162be3755abbed7Affected
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before 7a3e1481f4ee6c581bccc6bfc6c970aac5be7b0cAffected
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before 3447641d361dcc5511841d986ad4d849b2900d9bAffected
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before b13202d401e1a20fec89b0cda733dcbaf279f79dAffected
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before dd633280de7fdfd60dc4fcf63d04e2ad95b43269Affected
  • eb36bedf28be6d986bdbcfa375bab08ffa45efd8 to before 452636ea5410a96e02ebaaf80b21e3620b98e0ddAffected
LinuxLinux
  • 4.11Affected
  • before 4.11Not affected
  • 5.10.266 through 5.10.*Not affected
  • 5.15.217 through 5.15.*Not affected
  • 6.1.183 through 6.1.*Not affected
  • 6.6.152 through 6.6.*Not affected
  • 6.12.104 through 6.12.*Not affected
  • 6.18.45 through 6.18.*Not affected
  • 7.1.9 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.