CVE-2026-97953: net: stmmac: fix TX descriptor availability check for TSO traffic

Published Sep 25, 2026
·
Updated

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

net: stmmac: fix TX descriptor availability check for TSO traffic

stmmactsoxmit() estimates the number of free TX descriptors required by a TSO skb as:

(skb->len - protohdrlen) / TSOMAXBUFFSIZE + 1

which assumes the payload is split into TSOMAXBUFFSIZE chunks. This underestimates the descriptors actually consumed by stmmactsoallocator(), since each fragment is mapped individually and so it needs at least one descriptor regardless of its size. Moreover, one descriptor is used for the L2/L3/L4 headers and, when the MSS changes, one more is consumed for the MSS context descriptor. For a highly fragmented TSO skb the check can therefore pass even when the ring has too few free slots. stmmactsoallocator() then writes past the available descriptors, overwriting descriptors still owned by the DMA engine, corrupting the TX ring. Add stmmactsogetnumdesc() to compute the exact number of descriptors needed for the header, the linear payload and each fragment, plus the MSS context descriptor when required, and use it in the availability check.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 25, 2026
CVE Published
via MITRE·10:23 AM
Data Sourced
via MITRE·10:23 AM
Description
Data Sourced
via NVD·11:17 AM
DescriptionSeverity

Frequently Asked Questions

1

What traffic pattern is needed to trigger the corruption?

The issue is triggered by TSO traffic using a highly fragmented socket buffer. The descriptor pre-check can underestimate the space required because each fragment needs its own descriptor, in addition to header handling and potentially an MSS context descriptor.

2

What condition makes the transmit ring unsafe?

The unsafe condition occurs when the available TX descriptors are fewer than the number actually consumed by stmmac_tso_allocator(), despite passing the original availability check. The allocator can then overwrite descriptors still owned by the DMA engine, corrupting the TX ring.

3

Does MSS handling affect exploitability?

Yes. When the MSS changes, transmission consumes an additional MSS context descriptor, which the prior estimate did not account for. This further increases the gap between the checked and actual descriptor requirement.

4

What does the fix change?

The fix adds stmmac_tso_get_num_desc() and uses it for the availability check. It counts descriptors for headers, linear payload, every fragment, and an MSS context descriptor when required.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203