ZeroHour

CVE-2026-89535

niche

Use-after-free in Linux kernel svcrdma (NFS-over-RDMA) transport teardown

CVSS 3.1
8.1 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's svcrdma transport, used by NFSD to serve NFS over RDMA, contains a race condition use-after-free: svc_rdma_free() calls rdma_destroy_id() (freeing the RDMA connection-manager ID) before removing the transport's notification entry from the device's xarray, so a concurrent ib_unregister_device() walk can dispatch svc_rdma_xprt_done() against the already-freed sc_cm_id. The bug is triggered when transport teardown races with RDMA device unregistration, for example during NIC hot-removal, driver unbind, or other device-teardown events. Successful exploitation yields kernel memory corruption on the affected host with high impact to confidentiality, integrity, and availability (CVSS 8.1), including potential kernel code execution or a system crash. Only systems running NFSD with the NFS-over-RDMA transport on RDMA-capable hardware (InfiniBand/RoCE) are exposed; the fix also hardens new error paths where sc_cm_id can be NULL. No public proof-of-concept exists, the issue is not in CISA's KEV catalog, and no exploitation has been observed in the wild.

What to do: Apply kernel updates from your distribution once the reordering fix (rpcrdma_rn_unregister moved before rdma_destroy_id, plus the sc_cm_id NULL check) lands in your kernel package, and reboot to load the patched kernel. If immediate patching is not possible, consider disabling NFS over RDMA on nfsservers that do not need it (e.g., do not listen on the RDMA port 20049) and restrict RDMA fabrics to trusted administrative networks. Watch for unexpected RDMA device unregistration or kernel splats referencing svc_rdma_free/svc_rdma_xprt_done as indicators of the race being hit.

Affected
Linux kernel (svcrdma / NFSD NFS-over-RDMA)
Estimated exposure
niche≈ low thousands to low tens of thousands of NFS-over-RDMA server endpoints worldwide (clearly an estimate) — svcrdma is an opt-in kernel transport that requires RDMA-capable NICs (InfiniBand/RoCE) and is primarily deployed in HPC clusters and specialized storage appliances rather than general-purpose or internet-facing servers.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: svcrdma: Reorder rpcrdma_rn_unregister before rdma_destroy_id svc_rdma_free() caches rdma->sc_cm_id->device before teardown, then calls rdma_destroy_id(sc_cm_id) which frees the cm_id. rpcrdma_rn_unregister() follows, but between those two calls the transport's sc_rn entry is still installed in the device's rd_xa. A concurrent ib_unregister_device walk can dispatch svc_rdma_xprt_done() against the now-freed sc_cm_id. Move rpcrdma_rn_unregister() before rdma_destroy_id() so the transport's notification entry is removed from the xarray before the cm_id it references is destroyed. Also guard the sc_cm_id dereference with a NULL check: the following patches introduce paths that reach svc_rdma_free() with sc_cm_id == NULL (listener create failure, ADDR_CHANGE replacement failure).

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

In the news

No ingested article mentions this CVE yet.