CVE-2026-93151
High · 7.5CVSS
7.5
EPSS
0.7%
Published
Sep 17, 2026
CISA due date
—
Cloudanix analysis
A flaw in the Linux kernel can cause storage servers using high-speed RDMA networking to slowly lose memory when connections are closed, eventually making the server unstable.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Memory leak of RDMA read/write contexts and request SGLs occurs in nvmet-rdma when an NVMe target is removed while I/Os remain in flight, because nvmet_rdma_send_done() and nvmet_rdma_release_rsp() are never invoked.
Why it matters to the business
Repeated target removal under load can exhaust kernel memory on systems using NVMe over RDMA, leading to degraded performance or denial of service for storage services.
How an attack unfolds
An attacker with network access to an NVMe/RDMA target repeatedly issues and aborts I/O while triggering queue teardown; the resulting unreclaimed allocations accumulate until memory pressure causes service disruption.
How to fix it
Apply the upstream kernel patch that invokes nvmet_rdma_free_rsp_resources() during QP teardown; rebuild and deploy the fixed kernel on affected systems.
How to confirm the fix worked
Confirm the patch is present by inspecting nvmet-rdma.c for the free_rsp_resources call on queue teardown; reproduce with blktests nvme/061 under the siw driver and verify absence of kmemleak reports.
Typical attack path
- Establish RDMA connection to nvmet target
- Submit I/O commands that allocate SGLs and RDMA contexts
- Force abrupt queue or target removal before completions are processed
- Repeat to amplify unreclaimed allocations
How to detect it
Inspect kernel logs and kmemleak output for unreferenced objects allocated in sgl_alloc_order or rdma_rw_ctx_init during nvmet_rdma_handle_command; correlate with target removal events.
- unreferenced object.*sgl_alloc_order
- unreferenced object.*rdma_rw_ctx_init
- backtrace.*nvmet_rdma_map_sgl_keyed
What your security team should do
- Prioritize kernel upgrade on all hosts running nvmet-rdma
- Monitor memory usage on NVMe/RDMA targets for unexpected growth
- Restrict RDMA exposure to trusted initiators until patched
The record
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.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|