HIGH Introduced in 6.0
erdma CQEvent UAF
CVE-2026-90309
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.0HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/erdma: Hold CQ references when processing EQ events EQ handlers look up CQs from dev->cq_xa and invoke CQ completion or error callbacks outside the xarray lock. erdma_destroy_cq() can erase the CQ from the xarray and free its queue buffer and doorbell record while a previously scheduled EQ handler is still using the CQ. Add a CQ refcount and take a reference under the xarray lock with refcount_inc_not_zero(). Remove the CQ from the xarray before dropping the destroy-path reference, then wait for in-flight EQ users before releasing CQ resources.
02KernelScan AI Analysis
Risk summary
A local user with access to an Alibaba erdma RDMA device can trigger a use-after-free by racing completion queue destruction against asynchronous event processing. Successful exploitation could lead to kernel memory corruption, information disclosure, or denial of service. The vulnerability requires specific erdma hardware and winning a narrow race window.
Vulnerability analysis
A race condition in the erdma RDMA driver allows a completion queue to be freed while an event queue handler is still using it. When the hardware signals a completion or error event, the handler looks up the target completion queue and processes it without holding a reference; if another thread destroys that same completion queue concurrently, its queue buffer and doorbell records can be freed while the event handler is still accessing them. The fix adds a reference count to each completion queue so that event handlers acquire a reference before touching the queue, and the destroy path removes the queue from the lookup table and waits for all in-flight users to finish before releasing any resources. This bug is reachable by any local user with access to the erdma RDMA device who can create and destroy completion queues, and exploitation requires winning a race between queue destruction and asynchronous event processing.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.1 | 6.0 | 6.1.188 | 610ef81797bb |
| 6.12 | 6.0 | 6.12.110 | 05b8ca493dd0 |
| 6.18 | 6.0 | 6.18.52 | 1fc9c1933959 |
| 6.6 | 6.0 | 6.6.157 | c0a83f29a24c |
| 7.2 | 6.0 | 7.2.6 | 4545f355654d |
| mainline | 6.0 | 7.3 | 98df2aee1459 |
| cip/6.1 | 6.0 | 6.1.189-cip61 | 610ef81797bb |
| cip/6.1-rt | 6.0 | 6.1.189-cip61-rt32 | 610ef81797bb |
| cip/6.12 | 6.0 | 6.12.111-cip32 | 05b8ca493dd0 |
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 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |