CVE-2026-93228: svcrdma: Reject Write/Reply chunks with segcount 0
In the Linux kernel, the following vulnerability has been resolved:
svcrdma: Reject Write/Reply chunks with segcount 0
A peer can send a Write or Reply chunk whose segcount field is zero. xdrcheckwritechunk() only rejects segcount > rcmaxpages, so zero passes the range check, and xdrinlinedecode(stream, 0) returns the current (non-NULL) cursor without advancing. The function returns true and pclallocwrite() then links a struct svcrdmachunk with chsegcount == 0 onto rcwritepcl or rcreplypcl.
An earlier patch in this series made pclforeachsegment() safe for chsegcount == 0, so this no longer drives the memory walk it used to. Rejecting the malformed frame at the decode boundary is still worthwhile as defense in depth: it keeps degenerate zero-segment chunks off the parsed chunk lists entirely, so any future consumer that walks chsegments directly cannot observe one, and it makes the zero-floor easy to backport to trees where the macro change is more intrusive. RFC 8166 has no meaning for a Write/Reply chunk that describes no remote buffer, so no legitimate client is affected.
xdrcheckreplychunk() funnels Reply chunks through xdrcheckwritechunk() and inherits the same rejection.
pclallocwrite() also links each chunk onto the parsed chunk list before filling its segment array. If a future change weakens the segcount-0 rejection, an incomplete chunk is visible to consumers during the fill loop. Reorder so that listaddtail() follows the segment fill loop, ensuring only fully-populated chunks appear on the list.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.12.111-1 - Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 7.2.6-1 - Upgrade
Upgrade
debian/linux-6.12to a version that resolves this vulnerability.Fixed in 6.12.111-1~deb12u1 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 6.1.191 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 6.6.160 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 6.12.111 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 6.18.50 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 7.2.4 - Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.12.115-2Fixed in 7.2.12-1Fixed in 7.2.15-1 - Upgrade
Upgrade
debian/linux-6.12to a version that resolves this vulnerability.Fixed in 6.12.113-1~deb12u1 - Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
Reject Write and Reply chunks with segcount == 0 at the decode boundary, so zero-segment chunks are not added to the parsed chunk lists.
- Compensating control
In pcl_alloc_write(), move list_add_tail() until after the segment fill loop so only fully populated chunks are linked onto rc_write_pcl or rc_reply_pcl.
Event History
Frequently Asked Questions
What does an attacker need to do to trigger this condition?
The attacker must be an RDMA peer able to send a malformed Write or Reply chunk with its segcount field set to zero.
Will this rejection break compliant clients?
No. RFC 8166 assigns no meaning to a Write or Reply chunk that describes no remote buffer, so no legitimate client is affected.
Does a zero-segment chunk still cause the prior memory walk?
An earlier change made pcl_for_each_segment() safe when ch_segcount is zero, so this no longer drives the memory walk it previously could. The fix still rejects the malformed chunk during decoding so it cannot be placed on parsed chunk lists for later consumers.