HIGH
rdma SRQ UAF
CVE-2026-46176
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.1HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init() mlx5_ib_dev_res_srq_init() allocates two SRQs, s0 and s1. When ib_create_srq() fails for s1, the error branch destroys s0 but falls through and unconditionally assigns the freed s0 and the ERR_PTR s1 to devr->s0 and devr->s1. This leads to several problems: the lock-free fast path checks "if (devr->s1) return 0;" and treats the ERR_PTR as already initialised; users in mlx5_ib_create_qp() dereference the freed SRQ or ERR_PTR via to_msrq(devr->s0)->msrq.srqn; and mlx5_ib_dev_res_cleanup() dereferences the ERR_PTR and double-frees s0 on teardown. Fix by adding the same `goto unlock` in the s1 failure path.
02KernelScan AI Analysis
Risk summary
A use-after-free vulnerability in the MLX5 RDMA driver's SRQ initialization can lead to kernel memory corruption and information disclosure when creating InfiniBand queue pairs. Systems with MLX5 InfiniBand hardware are at risk of kernel crashes or potential privilege escalation through memory corruption.
Vulnerability analysis
The vulnerability occurs in mlx5_ib_dev_res_srq_init() when the second SRQ (s1) creation fails. The error path destroys the first SRQ (s0) but falls through to assign both the freed pointer and the ERR_PTR to device resources (devr->s0 and devr->s1). This creates a use-after-free condition when the freed s0 is later dereferenced during QP creation—leaking slab data via to_msrq(devr->s0)->msrq.srqn—and a double-free during driver teardown. The fix adds a proper goto statement to prevent the fall-through assignment. Attack surface is local, requiring access to MLX5 InfiniBand hardware and the ability to trigger QP creation (typically granted to users in the rdma group or with equivalent low privileges).
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.12 | 6.12.88 | bc2cf5935b46 |
| 6.18 | 6.18.30 | b087913ae882 |
| 6.6 | 6.6.140 | a13c2ac4d480 |
| 7.0 | 7.0.7 | 6fd93142dd1d |
| mainline | 7.1-rc3 | c488df06bd55 |