HIGH Introduced in 4.6
rdmavt AllocDevice UAF
CVE-2026-93104
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/rvt: Return NULL after port allocation failure rvt_alloc_device() deallocates the IB device when its port array cannot be allocated but then returns the pointer to the released allocation. Callers treat any non-NULL value as valid and dereference it, resulting in a use-after-free. Return NULL immediately after deallocation so callers can propagate the allocation failure.
02KernelScan AI Analysis
Risk summary
A use-after-free in the rdmavt RDMA driver's device allocation path occurs when a port array allocation fails under memory pressure. The freed device pointer is returned to callers instead of NULL, leading to dereference of released memory. Any local user who can induce OOM conditions on a system with the rdmavt module loaded (typically alongside hfi1 or qib InfiniBand hardware) can trigger this bug, potentially achieving kernel code execution or a system crash.
Vulnerability analysis
When the rdmavt RDMA driver sets up a new device, it creates the main device structure first, then tries to allocate memory for the per-port data. If that second allocation fails, the driver frees the device structure but accidentally returns the now-stale pointer instead of NULL. Callers assume any non-NULL result is valid and use it, accessing memory that has already been released. The fix makes the driver return NULL immediately after freeing, so callers properly detect the failure. The bug is reached during RDMA device initialization when the driver loads, typically automatic when hfi1 or qib InfiniBand hardware is present. An unprivileged local user can trigger the allocation failure by causing system-wide memory pressure, though exploiting the use-after-free would also require careful heap manipulation to replace the freed object with attacker-controlled data.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 4.6 | 6.12.114 | 5a1a7a5e2fe1 |
| 6.18 | 4.6 | 6.18.57 | 80968b42d130 |
| 6.6 | 4.6 | 6.6.160 | b7129930d1ec |
| 7.2 | 4.6 | 7.2.6 | b1e1b25723af |
| mainline | 4.6 | 7.3 | 2982eaf3b9d2 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Affected — no CIP fix yet (latest 6.12.112-cip33) |
| cip/6.1 | Affected — no CIP fix yet (latest 6.1.189-cip61) |
| cip/6.1-rt | Affected — no CIP fix yet (latest 6.1.189-cip61-rt32) |
| cip/5.10 | Affected — no CIP fix yet (latest 5.10.271-cip78) |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |