In the Linux kernel, the following vulnerability has been resolved:
RDMA/cma: Ensure rdma_addr_cancel() happens before issuing more requests
The FSM can run in a circle allowing rdma_resolve_ip() to be called twice on the same id_priv. While this cannot happen without going through the work, it violates the invariant that the same address resolution background request cannot be active twice.
CPU 1 CPU 2
rdma_resolve_addr(): RDMA_CM_IDLE -> RDMA_CM_ADDR_QUERY rdma_resolve_ip(addr_handler) #1
process_one_req(): for #1 addr_handler(): RDMA_CM_ADDR_QUERY -> RDMA_CM_ADDR_BOUND mutex_unlock(&id_priv->handler_mutex); [.. handler still running ..]
rdma_resolve_addr(): RDMA_CM_ADDR_BOUND -> RDMA_CM_ADDR_QUERY rdma_resolve_ip(addr_handler) !! two requests are now on the req_list
rdma_destroy_id(): destroy_id_handler_unlock(): _destroy_id(): cma_cancel_operation(): rdma_addr_cancel()
// process_one_req() self removes it spin_lock_bh(&lock); cancel_delayed_work(&req->work); if (!list_empty(&req->list)) == true
! rdma_addr_cancel() returns after process_on_req #1 is done
kfree(id_priv)
process_one_req(): for #2 addr_handler(): mutex_lock(&id_priv->handler_mutex); !! Use after free on id_priv
rdma_addr_cancel() expects there to be one req on the list and only cancels the first one. The self-removal behavior of the work only happens after the handler has returned. This yields a situations where the req_list can have two reqs for the same "handle" but rdma_addr_cancel() only cancels the first one.
The second req remains active beyond rdma_destroy_id() and will use-after-free id_priv once it inevitably triggers.
Fix this by remembering if the id_priv has called rdma_resolve_ip() and always cancel before calling it again. This ensures the req_list never gets more than one item in it and doesn't cost anything in the normal flow that never uses this strange error path.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade perfUpgrade kernel-headersUpgrade kernel-tools-debuginfoUpgrade kernel-develUpgrade python-perf-debuginfoUpgrade kernel-debuginfoUpgrade perf-debuginfoUpgrade bpftool-debuginfoUpgrade bpftoolUpgrade kernelUpgrade kernel-livepatch-5.10.192-182.736Upgrade kernel-toolsUpgrade kernel-debuginfo-common-aarch64Upgrade python-perfUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-x86_64 | Mar 14, 2025 | May 21, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-toolsUpgrade python3-perfUpgrade kernel-tools-libs | Oct 8, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-tools-libsUpgrade kernelUpgrade python3-perf | Nov 5, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp8 | — | Upgrade kernelUpgrade kernel-headersUpgrade python3-perfUpgrade python-perfUpgrade kernel-toolsUpgrade kernel-tools-libsUpgrade bpftoolUpgrade perfUpgrade kernel-devel | Jan 21, 2025 | May 21, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernel-tools-libsUpgrade python3-perfUpgrade kernelUpgrade kernel-tools | Nov 11, 2024 | May 21, 2024 |
| Suse | — | Upgrade reiserfs-kmp-defaultUpgrade kernel-default-develUpgrade kernel-default-baseUpgrade kselftests-kmp-rtUpgrade dtb-armUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-64kb-develUpgrade dtb-sprdUpgrade kernel-xen-baseUpgrade gfs2-kmp-64kbUpgrade kernel-ec2Upgrade dtb-caviumUpgrade kernel-devel-rtUpgrade kernel-64kbUpgrade dlm-kmp-rtUpgrade kernel-kvmsmall-livepatch-develUpgrade dtb-marvellUpgrade reiserfs-kmp-rtUpgrade kernel-default-livepatch-develUpgrade kernel-symsUpgrade kernel-develUpgrade dtb-xilinxUpgrade kernel-64kb-livepatch-develUpgrade kernel-xenUpgrade gfs2-kmp-azureUpgrade kernel-rt_debugUpgrade dtb-socionextUpgrade dtb-amazonUpgrade gfs2-kmp-defaultUpgrade kernel-trace-develUpgrade dtb-hisiliconUpgrade kernel-azure-extraUpgrade kernel-debug-develUpgrade kernel-rt-develUpgrade ocfs2-kmp-defaultUpgrade cluster-md-kmp-rtUpgrade dtb-alteraUpgrade kernel-rt-livepatchUpgrade kernel-source-vanillaUpgrade kernel-xen-develUpgrade kernel-docsUpgrade dtb-freescaleUpgrade ocfs2-kmp-azureUpgrade cluster-md-kmp-64kbUpgrade kernel-64kb-optionalUpgrade dtb-allwinnerUpgrade kernel-trace-baseUpgrade kernel-azure-optionalUpgrade dtb-amdUpgrade dtb-appleUpgrade kernel-default-optionalUpgrade kernel-default-livepatchUpgrade kernel-defaultUpgrade dtb-renesasUpgrade kernel-64kb-extraUpgrade dlm-kmp-defaultUpgrade kernel-debugUpgrade kernel-preempt-develUpgrade dtb-mediatekUpgrade dtb-rockchipUpgrade kernel-kvmsmall-vdsoUpgrade dtb-nvidiaUpgrade kernel-azure-baseUpgrade kselftests-kmp-defaultUpgrade kernel-default-vdsoUpgrade kernel-ec2-develUpgrade kernel-syms-azureUpgrade kernel-kvmsmall-develUpgrade kernel-sourceUpgrade kernel-traceUpgrade kernel-rt-extraUpgrade reiserfs-kmp-64kbUpgrade dtb-amlogicUpgrade gfs2-kmp-rtUpgrade kernel-rt-vdsoUpgrade kernel-preemptUpgrade kernel-azureUpgrade kernel-source-azureUpgrade dlm-kmp-azureUpgrade ocfs2-kmp-rtUpgrade kernel-rt_debug-develUpgrade cluster-md-kmp-azureUpgrade kernel-rt-livepatch-develUpgrade dtb-apmUpgrade kernel-default-base-rebuildUpgrade dtb-qcomUpgrade kernel-kvmsmallUpgrade kernel-default-extraUpgrade dtb-exynosUpgrade kernel-obs-qaUpgrade dtb-broadcomUpgrade kernel-debug-livepatch-develUpgrade kernel-azure-develUpgrade kernel-default-manUpgrade kernel-devel-azureUpgrade kernel-syms-rtUpgrade kernel-azure-vdsoUpgrade kernel-debug-vdsoUpgrade kernel-macrosUpgrade kselftests-kmp-azureUpgrade kernel-rt-optionalUpgrade kernel-obs-buildUpgrade cluster-md-kmp-defaultUpgrade kernel-docs-htmlUpgrade dtb-lgUpgrade kernel-ec2-baseUpgrade kselftests-kmp-64kbUpgrade kernel-zfcpdumpUpgrade ocfs2-kmp-64kbUpgrade reiserfs-kmp-azureUpgrade kernel-azure-livepatch-develUpgrade dlm-kmp-64kbUpgrade kernel-rt_debug-vdsoUpgrade kernel-source-rtUpgrade kernel-rt | Aug 9, 2024 | May 21, 2024 |
| Ubuntu | — | No solution exists | Jun 26, 2025 | May 21, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 21, 2024 |
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