KernelScan.io

HIGH Introduced in 7.0

svcrdma ReadSegment Leak

CVE-2026-89529

CVSS 7.5 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

01

In the Linux kernel, the following vulnerability has been resolved: svcrdma: Reject oversized Read segments at decode time The RPC/RDMA Read list decoder stores wire-supplied segment lengths without validation. xdr_count_read_segments() checks 4-byte alignment for non-zero position values but does not cap the segment length. An oversized rs_length reaches svc_rdma_build_read_segment(), which derives nr_bvec from it and can drive a large dynamic bvec allocation before verifying that enough rq_pages remain. If the post-allocation page-overrun guard fires, the freshly acquired rw context is not returned, leaking the resource. Reject any segment whose length exceeds the receive context's page budget during Read list decoding, consistent with how xdr_check_write_chunk() bounds Write segment counts against rc_maxpages. Also return the rw context on the existing post-allocation overrun path in svc_rdma_build_read_segment(), keeping that defensive guard balanced.

02

Engine v0.6.0

Risk summary

A remote attacker can send crafted RPC/RDMA requests with oversized Read segment lengths to an NFS-over-RDMA server, causing unbounded resource leakage that can lead to denial of service.

Affectednet/sunrpc/xprtrdma/svc_rdma_recvfrom.c (svcrdma)

Vulnerability analysis

The RPC/RDMA Read list decoder accepts wire-supplied segment lengths without bounding them against the receive context's page budget. An oversized segment length drives a large dynamic allocation in the read-segment builder; when the post-allocation page-overrun guard fires, the freshly acquired read/write context is not released, leaking kernel memory resources. The fix rejects any segment whose length exceeds the page budget at decode time and ensures the read/write context is properly returned on the overrun path. This is reachable by any remote client that can send RPC/RDMA requests to an NFS-over-RDMA server.

03

BranchIntroducedFixed inPatch commit
7.27.07.2.45120fe54e0e2
mainline7.07.3af6f0e06bed8