CVE-2025-21888

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

RDMA/mlx5: Fix a WARN during dereg_mr for DM type

Memory regions (MR) of type DM (device memory) do not have an associated
umem.

In the __mlx5_ib_dereg_mr() -> mlx5_free_priv_descs() flow, the code
incorrectly takes the wrong branch, attempting to call
dma_unmap_single() on a DMA address that is not mapped.

This results in a WARN [1], as shown below.

The issue is resolved by properly accounting for the DM type and
ensuring the correct branch is selected in mlx5_free_priv_descs().

[1]
WARNING: CPU: 12 PID: 1346 at drivers/iommu/dma-iommu.c:1230 iommu_dma_unmap_page+0x79/0x90
Modules linked in: ip6table_mangle ip6table_nat ip6table_filter ip6_tables iptable_mangle xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addrtype iptable_nat nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcgss oid_registry ovelay rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi ib_umad rdma_cm ib_ipoib iw_cm ib_cm mlx5_ib ib_uverbs ib_core fuse mlx5_core
CPU: 12 UID: 0 PID: 1346 Comm: ibv_rc_pingpong Not tainted 6.12.0-rc7+ #1631
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
RIP: 0010:iommu_dma_unmap_page+0x79/0x90
Code: 2b 49 3b 29 72 26 49 3b 69 08 73 20 4d 89 f0 44 89 e9 4c 89 e2 48 89 ee 48 89 df 5b 5d 41 5c 41 5d 41 5e 41 5f e9 07 b8 88 ff <0f> 0b 5b 5d 41 5c 41 5d 41 5e 41 5f c3 cc cc cc cc 66 0f 1f 44 00
RSP: 0018:ffffc90001913a10 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff88810194b0a8 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000001
RBP: ffff88810194b0a8 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000001 R14: 0000000000000000 R15: 0000000000000000
FS:  00007f537abdd740(0000) GS:ffff88885fb00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f537aeb8000 CR3: 000000010c248001 CR4: 0000000000372eb0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
? __warn+0x84/0x190
? iommu_dma_unmap_page+0x79/0x90
? report_bug+0xf8/0x1c0
? handle_bug+0x55/0x90
? exc_invalid_op+0x13/0x60
? asm_exc_invalid_op+0x16/0x20
? iommu_dma_unmap_page+0x79/0x90
dma_unmap_page_attrs+0xe6/0x290
mlx5_free_priv_descs+0xb0/0xe0 [mlx5_ib]
__mlx5_ib_dereg_mr+0x37e/0x520 [mlx5_ib]
? _raw_spin_unlock_irq+0x24/0x40
? wait_for_completion+0xfe/0x130
? rdma_restrack_put+0x63/0xe0 [ib_core]
ib_dereg_mr_user+0x5f/0x120 [ib_core]
? lock_release+0xc6/0x280
destroy_hw_idr_uobject+0x1d/0x60 [ib_uverbs]
uverbs_destroy_uobject+0x58/0x1d0 [ib_uverbs]
uobj_destroy+0x3f/0x70 [ib_uverbs]
ib_uverbs_cmd_verbs+0x3e4/0xbb0 [ib_uverbs]
? __pfx_uverbs_destroy_def_handler+0x10/0x10 [ib_uverbs]
? lock_acquire+0xc1/0x2f0
? ib_uverbs_ioctl+0xcb/0x170 [ib_uverbs]
? ib_uverbs_ioctl+0x116/0x170 [ib_uverbs]
? lock_release+0xc6/0x280
ib_uverbs_ioctl+0xe7/0x170 [ib_uverbs]
? ib_uverbs_ioctl+0xcb/0x170 [ib_uverbs]
__x64_sys_ioctl+0x1b0/0xa70
do_syscall_64+0x6b/0x140
entry_SYSCALL_64_after_hwframe+0x76/0x7e
RIP: 0033:0x7f537adaf17b
Code: 0f 1e fa 48 8b 05 1d ad 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d ed ac 0c 00 f7 d8 64 89 01 48
RSP: 002b:00007ffff218f0b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 00007ffff218f1d8 RCX: 00007f537adaf17b
RDX: 00007ffff218f1c0 RSI: 00000000c0181b01 RDI: 0000000000000003
RBP: 00007ffff218f1a0 R08: 00007f537aa8d010 R09: 0000561ee2e4f270
R10: 00007f537aace3a8 R11: 0000000000000246 R12: 00007ffff218f190
R13: 000000000000001c R14: 0000561ee2e4d7c0 R15: 00007ffff218f450
</TASK>
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTNIST
UNKNOWN
---
LinuxCNA
---
---
Awaiting analysis
This vulnerability is currently awaiting analysis.
Base Score
CVSS 3.x
EPSS Score
Percentile: 1%
Debian logo
Debian Releases
Debian Product
Codename
linux
bullseye
5.10.223-1
not-affected
bullseye (security)
5.10.234-1
fixed
bookworm
vulnerable
bookworm (security)
vulnerable
trixie
6.12.20-1
fixed
sid
6.12.21-1
fixed
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
linux
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
xenial
needs-triage
trusty
needs-triage
linux-allwinner-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-aws
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
xenial
needs-triage
trusty
needs-triage
linux-aws-5.0
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-aws-5.11
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-aws-5.13
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-aws-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-aws-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-aws-5.3
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-aws-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-aws-5.8
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-aws-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-aws-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-aws-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-aws-fips
oracular
dne
noble
dne
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
linux-aws-hwe
oracular
dne
noble
dne
jammy
dne
focal
dne
xenial
needs-triage
linux-azure
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
needs-triage
bionic
ignored
xenial
needs-triage
trusty
needs-triage
linux-azure-4.15
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-azure-5.11
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-azure-5.13
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-azure-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-azure-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-azure-5.3
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-azure-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-azure-5.8
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-azure-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-azure-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-azure-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-azure-edge
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-azure-fde
oracular
dne
noble
dne
jammy
needs-triage
focal
ignored
linux-azure-fde-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-azure-fde-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-azure-fde-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-azure-fips
oracular
dne
noble
dne
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
linux-bluefield
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-fips
oracular
dne
noble
dne
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
xenial
needs-triage
linux-gcp
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
needs-triage
bionic
ignored
xenial
needs-triage
linux-gcp-4.15
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-gcp-5.11
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-gcp-5.13
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-gcp-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-gcp-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-gcp-5.3
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-gcp-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-gcp-5.8
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-gcp-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-gcp-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-gcp-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-gcp-fips
oracular
dne
noble
dne
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
linux-gke
oracular
dne
noble
needs-triage
jammy
needs-triage
focal
ignored
linux-gke-4.15
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-gke-5.15
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-gke-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-gkeop
oracular
dne
noble
needs-triage
jammy
needs-triage
focal
ignored
linux-gkeop-5.15
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-gkeop-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-hwe
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
needs-triage
linux-hwe-5.11
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-hwe-5.13
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-hwe-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-hwe-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-hwe-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-hwe-5.8
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-hwe-6.11
oracular
dne
noble
needs-triage
jammy
dne
focal
dne
linux-hwe-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-hwe-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-hwe-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-hwe-edge
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
ignored
linux-ibm
oracular
dne
noble
needs-triage
jammy
needs-triage
focal
needs-triage
linux-ibm-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-ibm-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-intel-5.13
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-intel-iot-realtime
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-intel-iotg
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-intel-iotg-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-iot
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-kvm
oracular
dne
noble
dne
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
xenial
needs-triage
linux-lowlatency
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
dne
linux-lowlatency-hwe-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-lowlatency-hwe-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-lowlatency-hwe-6.11
oracular
dne
noble
needs-triage
jammy
dne
focal
dne
linux-lowlatency-hwe-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-lowlatency-hwe-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-lowlatency-hwe-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-lts-xenial
oracular
dne
noble
dne
jammy
dne
focal
dne
trusty
needs-triage
linux-nvidia
oracular
dne
noble
needs-triage
jammy
needs-triage
focal
dne
linux-nvidia-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-nvidia-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-nvidia-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-nvidia-lowlatency
oracular
dne
noble
needs-triage
jammy
dne
focal
dne
linux-nvidia-tegra
oracular
dne
noble
needs-triage
jammy
needs-triage
focal
dne
linux-nvidia-tegra-igx
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-oem
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-oem-5.10
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-oem-5.13
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-oem-5.14
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-oem-5.17
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-oem-5.6
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-oem-6.0
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-oem-6.1
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-oem-6.11
oracular
dne
noble
needs-triage
jammy
dne
focal
dne
linux-oem-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-oem-6.8
oracular
dne
noble
needs-triage
jammy
dne
focal
dne
linux-oracle
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
needs-triage
bionic
needs-triage
xenial
needs-triage
linux-oracle-5.0
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-oracle-5.11
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-oracle-5.13
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-oracle-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-oracle-5.3
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
linux-oracle-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-oracle-5.8
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-oracle-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-oracle-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-raspi
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
needs-triage
linux-raspi-5.4
oracular
dne
noble
dne
jammy
dne
focal
dne
bionic
needs-triage
linux-raspi-realtime
oracular
dne
noble
needs-triage
jammy
dne
focal
dne
linux-raspi2
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-realtime
oracular
needs-triage
noble
needs-triage
jammy
needs-triage
focal
dne
linux-riscv
oracular
needs-triage
noble
needs-triage
jammy
ignored
focal
ignored
linux-riscv-5.11
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-riscv-5.15
oracular
dne
noble
dne
jammy
dne
focal
needs-triage
linux-riscv-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-riscv-5.8
oracular
dne
noble
dne
jammy
dne
focal
ignored
linux-riscv-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-riscv-6.8
oracular
dne
noble
dne
jammy
needs-triage
focal
dne
linux-starfive-5.19
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-starfive-6.2
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-starfive-6.5
oracular
dne
noble
dne
jammy
ignored
focal
dne
linux-xilinx-zynqmp
oracular
dne
noble
dne
jammy
needs-triage
focal
needs-triage