CVE-2026-74623: net: atlantic: free stranded TX buffers on ring deinit

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026082219-CVE-2026-74623-32eb@gregkh>
From: Greg Kroah-Hartman <[email protected]>

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.

The Linux kernel CVE team has assigned CVE-2026-74623 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 4.11 with commit eb36bedf28be6d986bdbcfa375bab08ffa45efd8 and fixed in 6.1.183 with commit 307d80193b4a4a75b8dc4e0d3162be3755abbed7
	Issue introduced in 4.11 with commit eb36bedf28be6d986bdbcfa375bab08ffa45efd8 and fixed in 6.6.152 with commit 7a3e1481f4ee6c581bccc6bfc6c970aac5be7b0c
	Issue introduced in 4.11 with commit eb36bedf28be6d986bdbcfa375bab08ffa45efd8 and fixed in 6.12.104 with commit 3447641d361dcc5511841d986ad4d849b2900d9b
	Issue introduced in 4.11 with commit eb36bedf28be6d986bdbcfa375bab08ffa45efd8 and fixed in 6.18.45 with commit b13202d401e1a20fec89b0cda733dcbaf279f79d
	Issue introduced in 4.11 with commit eb36bedf28be6d986bdbcfa375bab08ffa45efd8 and fixed in 7.1.9 with commit dd633280de7fdfd60dc4fcf63d04e2ad95b43269
	Issue introduced in 4.11 with commit eb36bedf28be6d986bdbcfa375bab08ffa45efd8 and fixed in 7.2 with commit 452636ea5410a96e02ebaaf80b21e3620b98e0dd

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-74623
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/net/ethernet/aquantia/atlantic/aq_ring.c
	drivers/net/ethernet/aquantia/atlantic/aq_ring.h
	drivers/net/ethernet/aquantia/atlantic/aq_vec.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/307d80193b4a4a75b8dc4e0d3162be3755abbed7
	https://git.kernel.org/stable/c/7a3e1481f4ee6c581bccc6bfc6c970aac5be7b0c
	https://git.kernel.org/stable/c/3447641d361dcc5511841d986ad4d849b2900d9b
	https://git.kernel.org/stable/c/b13202d401e1a20fec89b0cda733dcbaf279f79d
	https://git.kernel.org/stable/c/dd633280de7fdfd60dc4fcf63d04e2ad95b43269
	https://git.kernel.org/stable/c/452636ea5410a96e02ebaaf80b21e3620b98e0dd
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.