CVE-2026-90423: RDMA/rxe: Fix UAF in ODP init error-handling path

Published Sep 17, 2026
·
Updated

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

RDMA/rxe: Fix UAF in ODP init error-handling path

rxeodpmrinituser() stores &umemodp->umem in mr->umem before calling rxeodpinitpages(). If rxeodpinitpages() fails, rxeodpmrinituser() releases umemodp and returns an error.

rxeregusermr() then unwinds the error through rxecleanup(), rxemrcleanup(), ibumemrelease(mr->umem). There is an ISERRORNULL(umem) check at the start of ibumemrelease(). But since mr->umem is NOT reset to NULL in the error handling path of rxeodpmrinituser(), the check passes and it reads already-freed fields like umem->isdmabuf, causing UAF.

Fix the UAF by clearing mr->umem after releasing the failed ODP umem so the MR cleanup path does not release it again.

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In rxe_odp_mr_init_user() error handling, clear mr->umem after releasing the failed umem so the MR cleanup path does not release it again.

    Linux kernel (RDMA/rxe) ODP init error-handling path Clear mr->umem after releasing failed umem (UAF fix) = mr->umem cleared after ib_umem_release() on failure
  2. Configuration

    In ib_umem_release(), add an IS_ERR_OR_NULL(umem) check at the start to prevent use-after-free when umem may already be freed.

    Linux kernel (ib_umem_release) IS_ERR_OR_NULL(umem) check = Add/start with IS_ERR_OR_NULL(umem) check
  3. Compensating control

    If running a kernel without this fix, mitigate by avoiding the specific RDMA/rxe ODP init path that triggers rxe_odp_init_pages() failures (e.g., do not exercise ODP initialization / ensure rxe_odp_init_pages() does not fail in your environment).

Event History

Sep 17, 2026
CVE Published
via MITRE·04:09 PM
Data Sourced
via MITRE·04:09 PM
Description

Frequently Asked Questions

1

When can the use-after-free occur?

It occurs when rxe_odp_init_pages() fails during initialization of a user ODP memory region. The failed ODP umem is released, but mr->umem still points to it and the subsequent cleanup path attempts to release it again.

2

What component and configuration path are involved?

The issue is in the Linux kernel RDMA rxe driver, specifically its on-demand paging (ODP) user memory-region initialization and error-unwind path. The provided information does not establish whether this path is enabled or reachable in a default configuration.

3

How does the fix prevent the issue?

After releasing the failed ODP umem, the fix clears mr->umem. This causes the later MR cleanup path to avoid releasing the already-freed umem a second time.

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