CVE-2025-38373: IB/mlx5: Fix potential deadlock in MR deregistration

Published Jul 25, 2025
·
Updated

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

IB/mlx5: Fix potential deadlock in MR deregistration

The issue arises when kzalloc() is invoked while holding umemmutex or any other lock acquired under umemmutex. This is problematic because kzalloc() can trigger fsreclaimaqcuire(), which may, in turn, invoke mmunotifierinvalidaterangestart(). This function can lead to mlx5ibinvalidaterange(), which attempts to acquire umemmutex again, resulting in a deadlock.

The problematic flow: CPU0 | CPU1 ---------------------------------------|------------------------------------------------ mlx5ibderegmr() | → revokemr() | → mutexlock(&umemodp->umemmutex) | | mlx5mkeycacheinit() | → mutexlock(&dev->cache.rblock) | → mlx5rcachecreateentlocked() | → kzalloc(GFPKERNEL) | → fsreclaim() | → mmunotifierinvalidaterangestart() | → mlx5ibinvalidaterange() | → mutexlock(&umemodp->umemmutex) → cacheentfindandstore() | → mutexlock(&dev->cache.rblock) |

Additionally, when kzalloc() is called from within cacheentfindandstore(), we encounter the same deadlock due to re-acquisition of umemmutex.

Solve by releasing umemmutex in deregmr() after umrrevokemr() and before acquiring rblock. This ensures that we don't hold umemmutex while performing memory allocations that could trigger the reclaim path.

This change prevents the deadlock by ensuring proper lock ordering and avoiding holding locks during memory allocation operations that could trigger the reclaim path.

The following lockdep warning demonstrates the deadlock:

python3/20557 is trying to acquire lock: ffff888387542128 (&umemodp->umemmutex){+.+.}-{4:4}, at: mlx5ibinvalidaterange+0x5b/0x550 [mlx5ib]

but task is already holding lock: ffffffff82f6b840 (mmunotifierinvalidaterangestart){+.+.}-{0:0}, at: unmapvmas+0x7b/0x1a0

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-> #3 (mmunotifierinvalidaterangestart){+.+.}-{0:0}: fsreclaimacquire+0x60/0xd0 memcgroupcssalloc+0x6f/0x9b0 cgroupinitsubsys+0xa4/0x240 cgroupinit+0x1c8/0x510 startkernel+0x747/0x760 x8664startreservations+0x25/0x30 x8664startkernel+0x73/0x80 commonstartup64+0x129/0x138

-> #2 (fsreclaim){+.+.}-{0:0}: fsreclaimacquire+0x91/0xd0 kmalloccachenoprof+0x4d/0x4c0 mlx5rcachecreateentlocked+0x75/0x620 [mlx5ib] mlx5mkeycacheinit+0x186/0x360 [mlx5ib] mlx5ibstagepostibregumrinit+0x3c/0x60 [mlx5ib] mlx5ibadd+0x4b/0x190 [mlx5ib] mlx5rprobe+0xd9/0x320 [mlx5ib] auxiliarybusprobe+0x42/0x70 reallyprobe+0xdb/0x360 driverprobedevice+0x8f/0x130 driverprobedevice+0x1f/0xb0 driverattach+0xd4/0x1f0 busforeachdev+0x79/0xd0 busadddriver+0xf0/0x200 driverregister+0x6e/0xc0 auxiliarydriverregister+0x6a/0xc0 dooneinitcall+0x5e/0x390 doinitmodule+0x88/0x240 initmodulefromfile+0x85/0xc0 idempotentinitmodule+0x104/0x300 x64sysfinitmodule+0x68/0xc0 dosyscall64+0x6d/0x140 entrySYSCALL64afterhwframe+0x4b/0x53

-> #1 (&dev->cache.rblock){+.+.}-{4:4}: mutexlock+0x98/0xf10 mlx5ibderegmr+0x6f2/0x890 [mlx5ib] mlx5ibderegmr+0x21/0x110 [mlx5ib] ibderegmruser+0x85/0x1f0 [ibcore] ---truncated---

Affected Software

144 affected componentsFixes available
Linux Linux kernel
Linux Linux kernel>=6.12.14<6.12.37
Linux Linux kernel>=6.13.3<6.15.6
Linux Linux kernel=6.16-rc1
Linux Linux kernel=6.16-rc2
Linux Linux kernel=6.16-rc3
Linux Linux kernel=6.16-rc4
debian/linux<6.12.37-1
6.12.37-1
debian/linux<6.12.37-1
6.12.37-1
linux/kernel<6.12.37
6.12.37
linux/kernel>=6.13.0<6.15.6
6.15.6
debian/linux
6.1.176-16.1.190-16.12.107-16.12.115-27.2.12-17.2.15-1
ubuntu/linux-hwe-edge*
ubuntu/linux-aws-5.0*
ubuntu/linux-aws-5.3*
ubuntu/linux-azure*
ubuntu/linux-azure-5.3*
ubuntu/linux-azure-edge*
ubuntu/linux-gcp*
ubuntu/linux-gcp-5.3*
ubuntu/linux-gke-4.15*
ubuntu/linux-gke-5.4*
ubuntu/linux-gkeop-5.4*
ubuntu/linux-hwe*
ubuntu/linux-hwe-edge*
ubuntu/linux-oem*
ubuntu/linux-oracle-5.0*
ubuntu/linux-oracle-5.3*
ubuntu/linux-aws-5.11*
ubuntu/linux-aws-5.13*
ubuntu/linux-aws-5.8*
ubuntu/linux-azure-5.11*
ubuntu/linux-azure-5.13*
ubuntu/linux-azure-5.8*
ubuntu/linux-azure-fde*
ubuntu/linux-gcp-5.11*
ubuntu/linux-gcp-5.13*
ubuntu/linux-gcp-5.8*
ubuntu/linux-gke*
ubuntu/linux-gke-5.15*
ubuntu/linux-gkeop*
ubuntu/linux-gkeop-5.15*
ubuntu/linux-hwe-5.11*
ubuntu/linux-hwe-5.13*
ubuntu/linux-hwe-5.8*
ubuntu/linux-intel-5.13*
ubuntu/linux-oem-5.10*
ubuntu/linux-oem-5.13*
ubuntu/linux-oem-5.6*
ubuntu/linux-oracle-5.11*
ubuntu/linux-oracle-5.13*
ubuntu/linux-oracle-5.8*
ubuntu/linux-raspi2*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.11*
ubuntu/linux-riscv-5.8*
ubuntu/linux-allwinner-5.19*
ubuntu/linux-aws-5.19*
ubuntu/linux-aws-6.2*
ubuntu/linux-aws-6.5*
ubuntu/linux-aws-6.8<6.8.0-1046.49~22.04.1
6.8.0-1046.49~22.04.1
ubuntu/linux-azure-5.19*
ubuntu/linux-azure-6.2*
ubuntu/linux-azure-6.5*
ubuntu/linux-azure-6.8<6.8.0-1051.57~22.04.1
6.8.0-1051.57~22.04.1
ubuntu/linux-azure-fde-5.19*
ubuntu/linux-azure-fde-6.2*
ubuntu/linux-azure-fde-6.8<6.8.0-1046.53~22.04.1
6.8.0-1046.53~22.04.1
ubuntu/linux-gcp-5.19*
ubuntu/linux-gcp-6.2*
ubuntu/linux-gcp-6.5*
ubuntu/linux-gcp-6.8<6.8.0-1047.50~22.04.2
6.8.0-1047.50~22.04.2
ubuntu/linux-hwe-5.19*
ubuntu/linux-hwe-6.2*
ubuntu/linux-hwe-6.5*
ubuntu/linux-hwe-6.8<6.8.0-100.100~22.04.1
6.8.0-100.100~22.04.1
ubuntu/linux-ibm-6.8<6.8.0-1044.44~22.04.1
6.8.0-1044.44~22.04.1
ubuntu/linux-intel-iot-realtime*
ubuntu/linux-lowlatency-hwe-5.19*
ubuntu/linux-lowlatency-hwe-6.2*
ubuntu/linux-lowlatency-hwe-6.5*
ubuntu/linux-lowlatency-hwe-6.8<6.8.0-100.100.1~22.04.1
6.8.0-100.100.1~22.04.1
ubuntu/linux-nvidia-6.2*
ubuntu/linux-nvidia-6.5*
ubuntu/linux-nvidia-6.8<6.8.0-1046.49~22.04.1
6.8.0-1046.49~22.04.1
ubuntu/linux-oem-5.17*
ubuntu/linux-oem-6.0*
ubuntu/linux-oem-6.1*
ubuntu/linux-oem-6.5*
ubuntu/linux-oracle-6.5*
ubuntu/linux-oracle-6.8<6.8.0-1043.44~22.04.1
6.8.0-1043.44~22.04.1
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.19*
ubuntu/linux-riscv-6.5*
ubuntu/linux-riscv-6.8<6.8.0-100.100~22.04.1
6.8.0-100.100~22.04.1
ubuntu/linux-starfive-5.19*
ubuntu/linux-starfive-6.2*
ubuntu/linux-starfive-6.5*
ubuntu/linux-realtime-6.8<6.8.1-1041.42~22.04.1
6.8.1-1041.42~22.04.1
ubuntu/linux<6.8.0-100.100
6.8.0-100.100
ubuntu/linux-aws<6.8.0-1046.49
6.8.0-1046.49
ubuntu/linux-aws-6.14<6.14.0-1015.15~24.04.1
6.14.0-1015.15~24.04.1
ubuntu/linux-azure<6.8.0-1046.52
6.8.0-1046.52
ubuntu/linux-azure-6.11*
ubuntu/linux-azure-6.14<6.14.0-1014.14~24.04.1
6.14.0-1014.14~24.04.1
ubuntu/linux-azure-fde<6.8.0-1046.53
6.8.0-1046.53
ubuntu/linux-azure-nvidia<6.8.0-1039.42
6.8.0-1039.42
ubuntu/linux-azure-nvidia-6.14<6.14.0-1007.7
6.14.0-1007.7
ubuntu/linux-gcp<6.8.0-1047.50
6.8.0-1047.50
ubuntu/linux-gcp-6.11*
ubuntu/linux-gcp-6.14<6.14.0-1018.19~24.04.1
6.14.0-1018.19~24.04.1
ubuntu/linux-gke<6.8.0-1043.48
6.8.0-1043.48
ubuntu/linux-gkeop<6.8.0-1030.33
6.8.0-1030.33
ubuntu/linux-hwe-6.11*
ubuntu/linux-ibm<6.8.0-1044.44
6.8.0-1044.44
ubuntu/linux-intel*
ubuntu/linux-lowlatency<6.8.0-100.100.1
6.8.0-100.100.1
ubuntu/linux-lowlatency-hwe-6.11*
ubuntu/linux-nvidia<6.8.0-1046.49
6.8.0-1046.49
ubuntu/linux-nvidia-6.11*
ubuntu/linux-nvidia-lowlatency<6.8.0-1046.49.1
6.8.0-1046.49.1
ubuntu/linux-nvidia-tegra<6.8.0-1020.20
6.8.0-1020.20
ubuntu/linux-oem-6.11*
ubuntu/linux-oem-6.14<6.14.0-1014.14
6.14.0-1014.14
ubuntu/linux-oem-6.8*
ubuntu/linux-oracle<6.8.0-1043.44
6.8.0-1043.44
ubuntu/linux-oracle-6.14<6.14.0-1015.15~24.04.1
6.14.0-1015.15~24.04.1
ubuntu/linux-raspi<6.8.0-1047.51
6.8.0-1047.51
ubuntu/linux-raspi-realtime*
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-6.14<6.14.0-34.34.1~24.04.1
6.14.0-34.34.1~24.04.1
ubuntu/linux-xilinx<6.8.0-1023.24
6.8.0-1023.24
ubuntu/linux-bluefield<6.8.0-1016.20
6.8.0-1016.20
ubuntu/linux-raspi-realtime<6.8.0-2037.38
6.8.0-2037.38
ubuntu/linux-realtime<6.8.1-1041.42
6.8.1-1041.42
ubuntu/linux-realtime-6.14<6.14.0-1014.14~24.04.1
6.14.0-1014.14~24.04.1
ubuntu/linux-aws-fips<6.8.0-1046.49+fips1
6.8.0-1046.49+fips1
ubuntu/linux-azure-fips<6.8.0-1046.52+fips1
6.8.0-1046.52+fips1
ubuntu/linux-fips<6.8.0-100.100+fips1
6.8.0-100.100+fips1
ubuntu/linux-gcp-fips<6.8.0-1047.50+fips1
6.8.0-1047.50+fips1
ubuntu/linux-azure-fde*
ubuntu/linux-vmware*

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.12.37-1
  2. Upgrade

    Upgrade linux/Kernel to a version that resolves this vulnerability.

    Fixed in 6.12.37
  3. Upgrade

    Upgrade linux/Kernel to a version that resolves this vulnerability.

    Fixed in 6.15.6
  4. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.115-2Fixed in 7.2.12-1Fixed in 7.2.15-1
  5. Upgrade

    Upgrade ubuntu/linux-aws-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.49~22.04.1
  6. Upgrade

    Upgrade ubuntu/linux-azure-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1051.57~22.04.1
  7. Upgrade

    Upgrade ubuntu/linux-azure-fde-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.53~22.04.1
  8. Upgrade

    Upgrade ubuntu/linux-gcp-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1047.50~22.04.2
  9. Upgrade

    Upgrade ubuntu/linux-hwe-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-100.100~22.04.1
  10. Upgrade

    Upgrade ubuntu/linux-ibm-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1044.44~22.04.1
  11. Upgrade

    Upgrade ubuntu/linux-lowlatency-hwe-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-100.100.1~22.04.1
  12. Upgrade

    Upgrade ubuntu/linux-nvidia-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.49~22.04.1
  13. Upgrade

    Upgrade ubuntu/linux-oracle-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1043.44~22.04.1
  14. Upgrade

    Upgrade ubuntu/linux-riscv-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-100.100~22.04.1
  15. Upgrade

    Upgrade ubuntu/linux-realtime-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.1-1041.42~22.04.1
  16. Upgrade

    Upgrade ubuntu/linux to a version that resolves this vulnerability.

    Fixed in 6.8.0-100.100
  17. Upgrade

    Upgrade ubuntu/linux-aws to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.49
  18. Upgrade

    Upgrade ubuntu/linux-aws-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-1015.15~24.04.1
  19. Upgrade

    Upgrade ubuntu/linux-azure to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.52
  20. Upgrade

    Upgrade ubuntu/linux-azure-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-1014.14~24.04.1
  21. Upgrade

    Upgrade ubuntu/linux-azure-fde to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.53
  22. Upgrade

    Upgrade ubuntu/linux-azure-nvidia to a version that resolves this vulnerability.

    Fixed in 6.8.0-1039.42
  23. Upgrade

    Upgrade ubuntu/linux-azure-nvidia-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-1007.7
  24. Upgrade

    Upgrade ubuntu/linux-gcp to a version that resolves this vulnerability.

    Fixed in 6.8.0-1047.50
  25. Upgrade

    Upgrade ubuntu/linux-gcp-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-1018.19~24.04.1
  26. Upgrade

    Upgrade ubuntu/linux-gke to a version that resolves this vulnerability.

    Fixed in 6.8.0-1043.48
  27. Upgrade

    Upgrade ubuntu/linux-gkeop to a version that resolves this vulnerability.

    Fixed in 6.8.0-1030.33
  28. Upgrade

    Upgrade ubuntu/linux-ibm to a version that resolves this vulnerability.

    Fixed in 6.8.0-1044.44
  29. Upgrade

    Upgrade ubuntu/linux-lowlatency to a version that resolves this vulnerability.

    Fixed in 6.8.0-100.100.1
  30. Upgrade

    Upgrade ubuntu/linux-nvidia to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.49
  31. Upgrade

    Upgrade ubuntu/linux-nvidia-lowlatency to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.49.1
  32. Upgrade

    Upgrade ubuntu/linux-nvidia-tegra to a version that resolves this vulnerability.

    Fixed in 6.8.0-1020.20
  33. Upgrade

    Upgrade ubuntu/linux-oem-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-1014.14
  34. Upgrade

    Upgrade ubuntu/linux-oracle to a version that resolves this vulnerability.

    Fixed in 6.8.0-1043.44
  35. Upgrade

    Upgrade ubuntu/linux-oracle-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-1015.15~24.04.1
  36. Upgrade

    Upgrade ubuntu/linux-raspi to a version that resolves this vulnerability.

    Fixed in 6.8.0-1047.51
  37. Upgrade

    Upgrade ubuntu/linux-riscv-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-34.34.1~24.04.1
  38. Upgrade

    Upgrade ubuntu/linux-xilinx to a version that resolves this vulnerability.

    Fixed in 6.8.0-1023.24
  39. Upgrade

    Upgrade ubuntu/linux-bluefield to a version that resolves this vulnerability.

    Fixed in 6.8.0-1016.20
  40. Upgrade

    Upgrade ubuntu/linux-raspi-realtime to a version that resolves this vulnerability.

    Fixed in 6.8.0-2037.38
  41. Upgrade

    Upgrade ubuntu/linux-realtime to a version that resolves this vulnerability.

    Fixed in 6.8.1-1041.42
  42. Upgrade

    Upgrade ubuntu/linux-realtime-6.14 to a version that resolves this vulnerability.

    Fixed in 6.14.0-1014.14~24.04.1
  43. Upgrade

    Upgrade ubuntu/linux-aws-fips to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.49+fips1
  44. Upgrade

    Upgrade ubuntu/linux-azure-fips to a version that resolves this vulnerability.

    Fixed in 6.8.0-1046.52+fips1
  45. Upgrade

    Upgrade ubuntu/linux-fips to a version that resolves this vulnerability.

    Fixed in 6.8.0-100.100+fips1
  46. Upgrade

    Upgrade ubuntu/linux-gcp-fips to a version that resolves this vulnerability.

    Fixed in 6.8.0-1047.50+fips1
  47. Compensating control

    In the mlx5_ib driver, release umem_mutex in dereg_mr() after umr_revoke_mr() and before acquiring rb_lock, so memory allocations that may trigger the reclaim path do not occur while umem_mutex is held.

Event History

Jul 25, 2025
CVE Published
via MITRE·12:53 PM
Data Sourced
via MITRE·12:53 PM
Description
Data Sourced
via OSV·12:53 PM
DescriptionAffected Software
Data Sourced
via NVD·01:15 PM
RemedyDescriptionSeverityWeaknessAffected Software
Nov 11, 2026
Data Sourced
via OSV·09:38 AM
Severity

Frequently Asked Questions

1

What is the severity of CVE-2025-38373?

CVE-2025-38373 has a medium severity rating due to potential deadlocks in memory deregistration.

2

How do I fix CVE-2025-38373?

To fix CVE-2025-38373, ensure you are using the latest patched version of the Linux Kernel that addresses this specific vulnerability.

3

What impact does CVE-2025-38373 have on systems?

CVE-2025-38373 can lead to system instability or crashes caused by deadlocks during memory deregistration.

4

Which versions of the Linux Kernel are affected by CVE-2025-38373?

CVE-2025-38373 potentially affects various versions of the Linux Kernel where the umem_mutex lock is held.

5

What is the root cause of CVE-2025-38373?

The root cause of CVE-2025-38373 is the invocation of kzalloc() while holding a mutex, which can result in a deadlock.

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