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---
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade perf6.12-debuginfoUpgrade kernel-livepatch-6.12.37-61.105Upgrade kernel6.12-headersUpgrade kernel6.12-tools-debuginfoUpgrade kernel6.12-tools-develUpgrade kernel6.12-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel6.12-develUpgrade python3-perf6.12Upgrade kernel6.12-toolsUpgrade kernel6.12-modules-extra-commonUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel6.12Upgrade kernel6.12-libbpf-develUpgrade kernel6.12-modules-extraUpgrade bpftool6.12-debuginfoUpgrade bpftool6.12Upgrade perf6.12Upgrade python3-perf6.12-debuginfoUpgrade kernel6.12-libbpfUpgrade kernel6.12-libbpf-debuginfoUpgrade kernel6.12-libbpf-static | Sep 16, 2025 | Jul 25, 2025 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Redhat_linux | — | No solution exists | Jul 31, 2025 | Jul 25, 2025 |
| Suse | — | Upgrade dtb-marvellUpgrade gfs2-kmp-64kbUpgrade dtb-hisiliconUpgrade kernel-azure-extraUpgrade kernel-source-azureUpgrade dlm-kmp-64kbUpgrade kernel-64kb-optionalUpgrade kernel-default-livepatchUpgrade reiserfs-kmp-64kbUpgrade kernel-default-vdsoUpgrade kernel-develUpgrade kernel-source-rtUpgrade dtb-amazonUpgrade kernel-azure-develUpgrade kernel-zfcpdumpUpgrade dtb-allwinnerUpgrade kernel-debugUpgrade kernel-64kb-develUpgrade kernel-azure-optionalUpgrade kernel-obs-qaUpgrade kernel-symsUpgrade cluster-md-kmp-azureUpgrade cluster-md-kmp-rtUpgrade dtb-qcomUpgrade kernel-default-optionalUpgrade kernel-kvmsmall-develUpgrade dtb-appleUpgrade kernel-rt-optionalUpgrade kernel-rt_debug-develUpgrade kselftests-kmp-64kbUpgrade kernel-macrosUpgrade kernel-rt_debugUpgrade kernel-default-develUpgrade kernel-kvmsmallUpgrade dtb-alteraUpgrade dtb-lgUpgrade dtb-broadcomUpgrade ocfs2-kmp-64kbUpgrade kernel-debug-develUpgrade ocfs2-kmp-rtUpgrade dtb-exynosUpgrade kselftests-kmp-azureUpgrade dtb-amdUpgrade ocfs2-kmp-defaultUpgrade kernel-kvmsmall-vdsoUpgrade gfs2-kmp-azureUpgrade gfs2-kmp-rtUpgrade dtb-caviumUpgrade dtb-amlogicUpgrade kernel-syms-azureUpgrade kernel-docs-htmlUpgrade kernel-devel-azureUpgrade kernel-rtUpgrade kernel-sourceUpgrade kernel-64kbUpgrade kernel-rt-livepatchUpgrade dtb-apmUpgrade kselftests-kmp-rtUpgrade dtb-freescaleUpgrade kernel-default-extraUpgrade kernel-docsUpgrade gfs2-kmp-defaultUpgrade kernel-obs-buildUpgrade dtb-xilinxUpgrade cluster-md-kmp-64kbUpgrade kernel-rt_debug-vdsoUpgrade kernel-default-livepatch-develUpgrade dtb-socionextUpgrade dtb-nvidiaUpgrade reiserfs-kmp-azureUpgrade kernel-defaultUpgrade dlm-kmp-rtUpgrade dtb-armUpgrade kernel-rt-livepatch-develUpgrade kernel-debug-vdsoUpgrade dlm-kmp-defaultUpgrade kernel-rt-extraUpgrade kernel-devel-rtUpgrade kernel-azureUpgrade kernel-64kb-extraUpgrade kernel-syms-rtUpgrade reiserfs-kmp-rtUpgrade kselftests-kmp-defaultUpgrade kernel-azure-vdsoUpgrade dtb-sprdUpgrade dtb-renesasUpgrade kernel-rt-vdsoUpgrade dtb-rockchipUpgrade kernel-rt-develUpgrade kernel-default-base-rebuildUpgrade ocfs2-kmp-azureUpgrade kernel-source-vanillaUpgrade kernel-default-baseUpgrade dtb-mediatekUpgrade reiserfs-kmp-defaultUpgrade dlm-kmp-azureUpgrade cluster-md-kmp-default | Dec 5, 2025 | Aug 18, 2025 |
| Ubuntu | — | Upgrade linux-image-aws-6.8Upgrade linux-image-6.14.0-1015-awsUpgrade linux-image-gke-6.8Upgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-1046-aws-fipsUpgrade linux-image-6.8.0-100-genericUpgrade linux-image-6.8.0-1043-gke-64kUpgrade linux-image-azure-lts-24.04Upgrade linux-image-aws-64k-6.14Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-6.8.0-1047-raspiUpgrade linux-image-azure-nvidia-6.14Upgrade linux-image-6.14.0-1014-realtimeUpgrade linux-image-azure-fipsUpgrade linux-image-oracle-64k-6.14Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-oem-24.04bUpgrade linux-image-aws-fips-6.8Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-generic-6.8Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-virtualUpgrade linux-image-oem-22.04aUpgrade linux-image-generic-64k-6.8Upgrade linux-image-ibm-6.8Upgrade linux-image-gcp-fipsUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-6.8.0-1047-gcp-fipsUpgrade linux-image-aws-64k-6.8Upgrade linux-image-fips-6.8Upgrade linux-image-virtual-6.14Upgrade linux-image-realtime-hwe-24.04Upgrade linux-image-6.8.0-100-fipsUpgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-1046-azure-fipsUpgrade linux-image-xilinxUpgrade linux-image-ibmUpgrade linux-image-6.14.0-1018-gcpUpgrade linux-image-gcp-6.14Upgrade linux-image-azure-fips-6.8Upgrade linux-image-kvmUpgrade linux-image-6.8.1-1041-realtimeUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-gke-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-awsUpgrade linux-image-azure-nvidiaUpgrade linux-image-gkeop-6.8Upgrade linux-image-raspi-realtime-6.8Upgrade linux-image-lowlatencyUpgrade linux-image-raspi-6.14Upgrade linux-image-ibm-classicUpgrade linux-image-raspi-realtimeUpgrade linux-image-gcpUpgrade linux-image-6.8.0-1047-gcp-64kUpgrade linux-image-oem-6.14Upgrade linux-image-6.8.0-1046-nvidia-64kUpgrade linux-image-6.8.0-1023-xilinxUpgrade linux-image-6.8.0-1046-awsUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.14.0-1015-aws-64kUpgrade linux-image-6.8.0-100-lowlatency-64kUpgrade linux-image-oracle-64kUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.8.0-1043-oracle-64kUpgrade linux-image-oem-24.04cUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1046-nvidia-lowlatencyUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-aws-fipsUpgrade linux-image-6.8.0-100-lowlatencyUpgrade linux-image-6.14.0-1016-raspiUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.8.0-1047-gcpUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-gkeUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidiaUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-oem-22.04dUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-6.8.0-1046-aws-64kUpgrade linux-image-6.14.0-1014-azureUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-gcp-6.8Upgrade linux-image-oracle-6.8Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.8.0-1046-nvidiaUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1043-oracleUpgrade linux-image-oracle-6.14Upgrade linux-image-6.8.0-1046-nvidia-lowlatency-64kUpgrade linux-image-aws-6.14Upgrade linux-image-gcp-64k-6.14Upgrade linux-image-oem-22.04cUpgrade linux-image-6.14.0-1015-oracleUpgrade linux-image-xilinx-6.8Upgrade linux-image-6.8.0-1043-gkeUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-lowlatency-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-6.14.0-1007-azure-nvidiaUpgrade linux-image-6.8.0-1030-gkeopUpgrade linux-image-6.14.0-34-genericUpgrade linux-image-oracleUpgrade linux-image-generic-64k-6.14Upgrade linux-image-6.8.0-1046-azureUpgrade linux-image-azureUpgrade linux-image-fipsUpgrade linux-image-6.14.0-34-generic-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-intel-iotgUpgrade linux-image-nvidia-6.8Upgrade linux-image-genericUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-generic-lpaeUpgrade linux-image-realtime-6.14Upgrade linux-image-6.14.0-1015-oracle-64kUpgrade linux-image-azure-6.8Upgrade linux-image-realtimeUpgrade linux-image-oem-24.04Upgrade linux-image-gkeopUpgrade linux-image-aws-64kUpgrade linux-image-6.14.0-1018-gcp-64kUpgrade linux-image-azure-6.14Upgrade linux-image-6.8.0-1044-ibmUpgrade linux-image-6.8.0-100-generic-64kUpgrade linux-image-6.14.0-1014-oemUpgrade linux-image-raspi-6.8Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-generic-64kUpgrade linux-image-virtual-6.8Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-raspiUpgrade linux-image-generic-6.14Upgrade linux-image-gke-64k-6.8Upgrade linux-image-6.8.0-2037-raspi-realtimeUpgrade linux-image-6.8.0-1051-azureUpgrade linux-image-oem-22.04Upgrade linux-image-nvidia-64k-6.8 | Jul 31, 2025 | Jul 25, 2025 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub