7.8
/ 10
HIGH
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Description
In the Linux kernel, the following vulnerability has been resolved:
RDMA/rxe: Fix double free in rxe_srq_from_init
In rxe_srq_from_init(), the queue pointer 'q' is assigned to
'srq->rq.queue' before copying the SRQ number to user space.
If copy_to_user() fails, the function calls rxe_queue_cleanup()
to free the queue, but leaves the now-invalid pointer in
'srq->rq.queue'.
The caller of rxe_srq_from_init() (rxe_create_srq) eventually
calls rxe_srq_cleanup() upon receiving the error, which triggers
a second rxe_queue_cleanup() on the same memory, leading to a
double free.
The call trace looks like this:
kmem_cache_free+0x.../0x...
rxe_queue_cleanup+0x1a/0x30 [rdma_rxe]
rxe_srq_cleanup+0x42/0x60 [rdma_rxe]
rxe_elem_release+0x31/0x70 [rdma_rxe]
rxe_create_srq+0x12b/0x1a0 [rdma_rxe]
ib_create_srq_user+0x9a/0x150 [ib_core]
Fix this by moving 'srq->rq.queue = q' after copy_to_user.
RDMA/rxe: Fix double free in rxe_srq_from_init
In rxe_srq_from_init(), the queue pointer 'q' is assigned to
'srq->rq.queue' before copying the SRQ number to user space.
If copy_to_user() fails, the function calls rxe_queue_cleanup()
to free the queue, but leaves the now-invalid pointer in
'srq->rq.queue'.
The caller of rxe_srq_from_init() (rxe_create_srq) eventually
calls rxe_srq_cleanup() upon receiving the error, which triggers
a second rxe_queue_cleanup() on the same memory, leading to a
double free.
The call trace looks like this:
kmem_cache_free+0x.../0x...
rxe_queue_cleanup+0x1a/0x30 [rdma_rxe]
rxe_srq_cleanup+0x42/0x60 [rdma_rxe]
rxe_elem_release+0x31/0x70 [rdma_rxe]
rxe_create_srq+0x12b/0x1a0 [rdma_rxe]
ib_create_srq_user+0x9a/0x150 [ib_core]
Fix this by moving 'srq->rq.queue = q' after copy_to_user.
Basic Information
ID
CVE-2026-45852
Source
Linux
Published
May 27, 2026 at 12:15
Modified
May 30, 2026 at 10:45
Affected Product
Vendor
Linux
Product
Linux
Version
aae0484e15f062ad2c2502e68e15dfb8b8f84608
Affected Versions
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux 350703fae672d4d649c3562c199eab5ec9dc7c79
Linux Linux 4.19.86
Linux Linux 4.20
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux aae0484e15f062ad2c2502e68e15dfb8b8f84608
Linux Linux 350703fae672d4d649c3562c199eab5ec9dc7c79
Linux Linux 4.19.86
Linux Linux 4.20
References
- git.kernel.org /stable/c/22b8c23a3b92d023614bb00896fe364b2c1a31d3
- git.kernel.org /stable/c/af5956243018918130d52c9f671efdb40bab3366
- git.kernel.org /stable/c/d286f0d4e3ad3caf5f0e673cdad7bf89bf37d947
- git.kernel.org /stable/c/26793db60925df1e88a29466813d586cbc190b8c
- git.kernel.org /stable/c/ce6f8e007682f378279d4cf83b240f12d52c723b
- git.kernel.org /stable/c/5c07aef09a121a4cd622a71eb0753a9e135c84a8
- git.kernel.org /stable/c/26a9cfe12f4ffdeaa136f252478986fa5f397ddc
- git.kernel.org /stable/c/0beefd0e15d962f497aad750b2d5e9c3570b66d1