CVE-2026-74558

CVE-2026-74558

published August 15, 2026

CVSS
—
EPSS
0%
Percentile
10.5
In the wild
Unconfirmed
What it is

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

xsk: reclaim invalid Tx descriptors in ZC batch path

The zero-copy Tx batch parser stops when it encounters an invalid

descriptor. If this happens after one or more continuation descriptors,

the Tx consumer can be advanced past fragments that are neither submitted

to the driver nor returned to userspace through the completion ring.

A similar problem occurs when a packet exceeds xdp_zc_max_segs. The

descriptors consumed up to the limit are released without completion, and

the remaining continuation descriptors can subsequently be interpreted

as the beginning of another packet.

Parse Tx batches in packet units and distinguish descriptors belonging to

complete valid packets from descriptors consumed while draining an

invalid or oversized packet. Return the former to the driver and append

the latter to the CQ address area so userspace can reclaim their UMEM

frames.

Treat a standalone invalid descriptor as a one-descriptor reclaim-only

packet. Advancing the Tx-ring consumer releases the ring slot, but does

not by itself return ownership of the referenced UMEM frame to userspace.

Once draining starts, continue until the packet's end-of-packet

descriptor is consumed. Preserve the drain state on the socket when EOP

has not yet been supplied, so draining can continue during a later call.

Leave incomplete but otherwise valid packets on the Tx ring.

Shared-UMEM pools using multi-buffer Tx also need packet-framed parsing.

Walk their Tx sockets one packet at a time, preserving the existing

per-socket fairness scheme, instead of using the legacy one-descriptor

fallback. Keep that fallback for shared pools that do not use

multi-buffer Tx. Since the drain state is maintained per socket and both

the singular and shared paths can resume an interrupted drain, changing

the socket list from singular to shared requires no special bind-time

transition.

CQ entries are positional, and drivers may complete only part of the Tx

work returned by xsk_tx_peek_release_desc_batch(). Therefore, reclaim-only

entries cannot be published immediately when earlier driver-visible

descriptors are still outstanding.

Track the number of driver-visible CQ entries preceding the reclaim

entries. Let xsk_tx_completed() publish partial hardware Tx completions,

and publish the reclaim entries only after every earlier Tx descriptor

has completed. Complete a reclaim-only batch immediately when there is no

driver-visible work in front of it, and prevent another Tx batch from

being appended while reclaim entries remain pending.

Also cap batch processing by the size of the pool's temporary descriptor

array, as Tx rings belonging to sockets sharing a UMEM may have different

sizes.

This ensures that every invalid Tx descriptor consumed by the ZC batch

path is either submitted to the driver as part of a valid packet or

returned to userspace without violating CQ completion ordering.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00209 · 10.5th percentile
Published
2026-08-15T17:18Z
References (4)
EPSS history
Timeline
  • 15 AUG 12:28Z
    xsk: reclaim invalid Tx descriptors in ZC batch path
    cvelistv5