CVE-2026-45852: RDMA/rxe: Fix double free in rxe_srq_from_init

Published May 27, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

RDMA/rxe: Fix double free in rxesrqfrominit

In rxesrqfrominit(), the queue pointer 'q' is assigned to 'srq->rq.queue' before copying the SRQ number to user space. If copytouser() fails, the function calls rxequeuecleanup() to free the queue, but leaves the now-invalid pointer in 'srq->rq.queue'.

The caller of rxesrqfrominit() (rxecreatesrq) eventually calls rxesrqcleanup() upon receiving the error, which triggers a second rxequeuecleanup() on the same memory, leading to a double free.

The call trace looks like this: kmemcachefree+0x.../0x... rxequeuecleanup+0x1a/0x30 [rdmarxe] rxesrqcleanup+0x42/0x60 [rdmarxe] rxeelemrelease+0x31/0x70 [rdmarxe] rxecreatesrq+0x12b/0x1a0 [rdmarxe] ibcreatesrquser+0x9a/0x150 [ibcore]

Fix this by moving 'srq->rq.queue = q' after copytouser.

Affected Software

8 affected components
Linux Linux kernel (rdma_rxe)
Linux Linux kernel>=4.19.86<5.10.259
Linux Linux kernel>=5.11<5.15.210
Linux Linux kernel>=5.16<6.1.176
Linux Linux kernel>=6.2<6.6.128
Linux Linux kernel>=6.7<6.12.75
Linux Linux kernel>=6.13<6.18.14
Linux Linux kernel>=6.19<6.19.4

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In the RDMA/rxe code path, fix the double-free by moving the queue pointer assignment `srq->rq.queue = q` to occur after `copy_to_user()` completes (instead of before it). If `copy_to_user()` fails, the function calls `rxe_queue_cleanup()`, so assigning the pointer only after successful copy prevents later cleanup from acting on an invalid/double-freed pointer.

    Linux kernel RDMA/rxe (function rxe_srq_from_init / rxe_create_srq) srq->rq.queue assignment order relative to copy_to_user() = Move assignment so `srq->rq.queue = q` occurs after `copy_to_user()`

Event History

May 27, 2026
CVE Published
via MITRE·12:15 PM
Data Sourced
via MITRE·12:15 PM
DescriptionSeverity
Data Sourced
via NVD·02:16 PM
RemedyDescriptionSeverityWeaknessAffected Software
Data Sourced
via Red Hat·03:14 PM
DescriptionSeverityAffected Software

Frequently Asked Questions

1

What conditions are required to trigger the double free?

A local attacker needs privileges sufficient to create an SRQ through the RDMA RXE driver and must cause the copy_to_user() operation in rxe_srq_from_init() to fail. The failure path then frees the same queue twice.

2

Which systems are exposed?

Systems using the Linux kernel's rdma_rxe (RXE) driver are relevant. The provided information does not identify affected kernel versions or confirm whether the driver is enabled by default.

3

What is the impact of a successful trigger?

The double free can affect confidentiality, integrity, and availability, as reflected by the supplied high-severity vector. The issue occurs during user SRQ creation in the RXE RDMA path.

4

What code change resolves the issue?

The fix assigns srq->rq.queue only after copy_to_user() succeeds. This prevents the error cleanup path from retaining and later freeing an already released queue pointer.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203