CVE-2026-99264
io_uring/net: don't retry recv on uncommitted buffers
In the Linux kernel, the following vulnerability has been resolved: io_uring/net: don't retry recv on uncommitted buffers Commit 41b70df5b38b ("io_uring/net: commit partial buffers on retry") commits ring provided buffers when a receive is going to be retried after a partial transfer, so that another request using the same buffer group can't be handed the memory the first one keeps receiving into. It commits the number of bytes received so far. That does the job for a single buffer which is consumed as a whole, but the request hangs on to all it has mapped: - For a buffer ring with IOU_PBUF_RING_INC only these bytes are consumed. The rest of the buffer stays at the head of the ring. - For a bundle only the buffers which hold these bytes are consumed, the others that were peeked stay in the ring. In both cases the next receive with that buffer group gets memory that the retried request is still going to write to, and whoever comes last overwrites the data of the other. What the retry fills isn't committed at all, as the buffer list isn't known any more at that point. So the kernel hands it out again later on, while the CQE tells the application that it was used, and for an incremental buffer that it is done with. The remainder can't be committed in advance: if the request ends up receiving less, there is no way to tell the application that more was consumed than the CQE accounts for. Complete the request with what it has got instead of retrying it. MSG_WAITALL is no longer honoured for receives into incremental buffers or multi buffer bundles, they can return a short count, with the request marked as failed like for other short MSG_WAITALL transfers.
Fixes and workarounds
No remediation reported in collected sources.
Missing remediation information is not evidence that no patch exists.
Affected products and versions
| Product | Versions | Authority |
|---|---|---|
| Linux Linux |
≥ fe9da1812f8697a38f7e30991d568ec199e16059; < 21cb1770a56a51266ab96d4ed2a3b6979db59694 (affected, git) ≥ 41b70df5b38bc80967d2e0ed55cc3c3896bba781; < fc8506eea4498ecba26ef8bf6dbbd74af3dc891d (affected, git) ≥ 41b70df5b38bc80967d2e0ed55cc3c3896bba781; < 97b8dc36ba3cb176b74a7929140aeaeb40d5cdc0 (affected, git) 3b53dc1c641f2884d4750fc25aaf6c36b90db606 (affected, git) 21a4ddb0f5e933f372808c10b9ac704505751bb1 (affected, git) 2eb7937b5fc7fcd90eab7bebb0181214b61b9283 (affected, git) ≥ 6.12.44; < 6.12.115 (affected, semver) ≥ 6.6.103; < 6.7 (affected, semver) ≥ 6.15.11; < 6.16 (affected, semver) ≥ 6.16.2; < 6.17 (affected, semver) Other versions: unaffected |
CNA: Linux |
| Linux Linux |
6.17 (affected) ≥ 0; < 6.17 (unaffected, semver) ≥ 6.12.115; ≤ 6.12.* (unaffected, semver) ≥ 6.18.60; ≤ 6.18.* (unaffected, semver) ≥ 7.2.14; ≤ 7.2.* (unaffected, semver) Other versions: affected |
CNA: Linux |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
CVSS assessments
No CVSS assessment reported. An unscored record is not a low-severity determination.
Exploit evidence
No exploit evidence in collected sources. This is not proof of no exploitation.
References
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.