🛡️ CVE-2025-38373 — kernel

🟡 CVSS 5.5 — Medium ✅ No Known Exploit NVD
5.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

IB/mlx5: Fix potential deadlock in MR deregistration

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 umem_mutex or

any other lock acquired under umem_mutex. This is problematic because

kzalloc() can trigger fs_reclaim_aqcuire(), which may, in turn, invoke

mmu_notifier_invalidate_range_start(). This function can lead to

mlx5_ib_invalidate_range(), which attempts to acquire umem_mutex again,

resulting in a deadlock.

The problematic flow:

CPU0 | CPU1

---------------------------------------|------------------------------------------------

mlx5_ib_dereg_mr() |

→ revoke_mr() |

→ mutex_lock(&umem_odp->umem_mutex) |

| mlx5_mkey_cache_init()

| → mutex_lock(&dev->cache.rb_lock)

| → mlx5r_cache_create_ent_locked()

| → kzalloc(GFP_KERNEL)

| → fs_reclaim()

| → mmu_notifier_invalidate_range_start()

| → mlx5_ib_invalidate_range()

| → mutex_lock(&umem_odp->umem_mutex)

→ cache_ent_find_and_store() |

→ mutex_lock(&dev->cache.rb_lock) |

Additionally, when kzalloc() is called from within

cache_ent_find_and_store(), we encounter the same deadlock due to

re-acquisition of umem_mutex.

Solve by releasing umem_mutex in dereg_mr() after umr_revoke_mr()

and before acquiring rb_lock. This ensures that we don't hold

umem_mutex 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 (&umem_odp->umem_mutex){+.+.}-{4:4}, at:

mlx5_ib_invalidate_range+0x5b/0x550 [mlx5_ib]

but task is already holding lock:

ffffffff82f6b840 (mmu_notifier_invalidate_range_start){+.+.}-{0:0}, at:

unmap_vmas+0x7b/0x1a0

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-> #3 (mmu_notifier_invalidate_range_start){+.+.}-{0:0}:

fs_reclaim_acquire+0x60/0xd0

mem_cgroup_css_alloc+0x6f/0x9b0

cgroup_init_subsys+0xa4/0x240

cgroup_init+0x1c8/0x510

start_kernel+0x747/0x760

x86_64_start_reservations+0x25/0x30

x86_64_start_kernel+0x73/0x80

common_startup_64+0x129/0x138

-> #2 (fs_reclaim){+.+.}-{0:0}:

fs_reclaim_acquire+0x91/0xd0

__kmalloc_cache_noprof+0x4d/0x4c0

mlx5r_cache_create_ent_locked+0x75/0x620 [mlx5_ib]

mlx5_mkey_cache_init+0x186/0x360 [mlx5_ib]

mlx5_ib_stage_post_ib_reg_umr_init+0x3c/0x60 [mlx5_ib]

__mlx5_ib_add+0x4b/0x190 [mlx5_ib]

mlx5r_probe+0xd9/0x320 [mlx5_ib]

auxiliary_bus_probe+0x42/0x70

really_probe+0xdb/0x360

__driver_probe_device+0x8f/0x130

driver_probe_device+0x1f/0xb0

__driver_attach+0xd4/0x1f0

bus_for_each_dev+0x79/0xd0

bus_add_driver+0xf0/0x200

driver_register+0x6e/0xc0

__auxiliary_driver_register+0x6a/0xc0

do_one_initcall+0x5e/0x390

do_init_module+0x88/0x240

init_module_from_file+0x85/0xc0

idempotent_init_module+0x104/0x300

__x64_sys_finit_module+0x68/0xc0

do_syscall_64+0x6d/0x140

entry_SYSCALL_64_after_hwframe+0x4b/0x53

-> #1 (&dev->cache.rb_lock){+.+.}-{4:4}:

__mutex_lock+0x98/0xf10

__mlx5_ib_dereg_mr+0x6f2/0x890 [mlx5_ib]

mlx5_ib_dereg_mr+0x21/0x110 [mlx5_ib]

ib_dereg_mr_user+0x85/0x1f0 [ib_core]

---truncated---

How this vulnerability can be exploited

This issue can be reached with local access to the system, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality none, integrity none, availability high.

Affected software

CVE-2025-38373 is recorded against 2 packages.

  • kernel (from 6.13.0 up to 6.15.6)
  • linux-kernel

Timeline and source

Published on 25 July 2025 and last revised on 15 July 2026. No public exploit is currently recorded for this entry. A vendor advisory or fix has been published. Record sourced from NVD.

References

git.kernel.org (Web)
git.kernel.org (Web)
git.kernel.org (Web)
github.com (Advisory)
nvd.nist.gov (Advisory)
git.kernel.org (Package)

CVE-2025-38373 on other distributions

Each distribution ships its own build and its own fixed version. Pick the one you run:

Details

Severity Medium
CVSS Score 5.5
CVSS Vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CWE N/A
Public Exploit ✅ No
Source NVD
Published 2025-07-25
Updated 2026-08-12
Modified 2026-07-15

Affected Packages

Software From version Fixed in
kernel 6.13.0 6.15.6
linux-kernel

Similar Threats

Vulnerability Monitoring

Track new vulnerabilities in kernel

CVE-2025-38373 is rated CVSS 5.5 Medium. BotEraser monitors your WordPress installation and notifies you when software you use appears in our vulnerability database.

Set Up Free Alerts →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.