KernelScan.io

HIGH Introduced in 4.8

nvmet-rdma Response Leak

CVE-2026-93151

CVSS 7.5 / 10.0 NVD

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

KernelScan AI6.5MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: nvmet-rdma: fix response resource leak on queue teardown When an nvme target with rdma transport is removed while I/Os are in flight, a response can be posted but its send completion is never delivered before the connection is torn down. As a result nvmet_rdma_send_done() and nvmet_rdma_release_rsp() are never called for the response, and this leaks the allocated RDMA read/write context and request SGLs. These leaks are recreated by running blktests nvme/061 with the rdma transport and the siw driver. Kernel kmemleak feature reports them as follows: unreferenced object 0xffff88812bc490c0 (size 32): comm "kworker/2:1H", pid 409, jiffies 4307744490 backtrace (crc 89afd339): __kmalloc_noprof+0x5f9/0x890 sgl_alloc_order+0x7b/0x380 nvmet_req_alloc_sgls+0x290/0x4f0 [nvmet] nvmet_rdma_map_sgl_keyed+0x241/0x12e0 [nvmet_rdma] nvmet_rdma_handle_command+0x73e/0xb80 [nvmet_rdma] __ib_process_cq+0x149/0x4c0 [ib_core] ib_cq_poll_work+0x49/0x160 [ib_core] process_one_work+0x8b2/0x1640 worker_thread+0x5fd/0xfe0 kthread+0x367/0x460 ret_from_fork+0x655/0x9d0 ret_from_fork_asm+0x1a/0x30 unreferenced object 0xffff88814bd05e80 (size 64): comm "kworker/3:1H", pid 148, jiffies 4295195428 backtrace (crc e35510cb): __kmalloc_noprof+0x5f9/0x890 rdma_rw_ctx_init+0x333/0x1fa0 [ib_core] nvmet_rdma_map_sgl_keyed+0x5c8/0x12e0 [nvmet_rdma] nvmet_rdma_handle_command+0x73e/0xb80 [nvmet_rdma] __ib_process_cq+0x149/0x4c0 [ib_core] ib_cq_poll_work+0x49/0x160 [ib_core] process_one_work+0x8b2/0x1640 worker_thread+0x5fd/0xfe0 kthread+0x367/0x460 ret_from_fork+0x655/0x9d0 ret_from_fork_asm+0x1a/0x30 To avoid the memory leaks, reclaim the memory of the in-flight responses when the queue QP is torn down. Call nvmet_rdma_free_rsp_resources() that frees up the RDMA read/write context and the request SGLs of such responses.

02

Engine v0.6.0

Risk summary

Systems configured as NVMe over Fabrics RDMA targets leak kernel memory when a remote initiator disconnects while I/O is in flight. Each teardown cycle leaks RDMA contexts and scatter-gather lists, which can accumulate and drive the system toward OOM with repeated connections. Any host on the RDMA fabric can trigger this without credentials on the target.

Affecteddrivers/nvme/target/rdma.c (nvmet-rdma)

Vulnerability analysis

When an NVMe over Fabrics RDMA target is removed or a remote initiator disconnects while I/O operations are in flight, the queue teardown path drains the queue pair but does not reclaim resources for responses whose send completions were never delivered. This leaves allocated RDMA read/write contexts and request scatter-gather lists unreferenced in kernel memory, accumulating with each repeated connection-and-disconnect cycle. The fix iterates over all in-flight responses during queue destruction and explicitly frees their associated resources before the queue pair is destroyed. A remote NVMe initiator on the same RDMA fabric can trigger this by connecting, issuing I/O, and disconnecting abruptly, requiring no privileges on the target system; the target must have RDMA hardware or a software RDMA driver and be configured to export NVMe over Fabrics.

03

BranchIntroducedFixed inPatch commit
5.154.85.15.22191cfa74f1f37
6.14.86.1.188156ec10a8be2
6.124.86.12.1105cc3b21729d4
6.184.86.18.52ca795fc1d8a1
6.64.86.6.1579584b3c30e4e
7.24.87.2.6d553a9dc1c45
mainline4.87.30114dd303b37
cip/6.14.86.1.189-cip61156ec10a8be2
cip/6.1-rt4.86.1.189-cip61-rt32156ec10a8be2
cip/6.124.86.12.111-cip325cc3b21729d4

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)