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 bpftool-debuginfoUpgrade kernel-headersUpgrade kernel-develUpgrade perfUpgrade python-perf-debuginfoUpgrade kernel-debuginfoUpgrade perf-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-toolsUpgrade kernelUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-livepatch-5.10.192-182.736Upgrade kernel-debuginfo-common-x86_64Upgrade bpftoolUpgrade python-perfUpgrade kernel-tools-devel | Mar 14, 2025 | May 21, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernelUpgrade kernel-toolsUpgrade python3-perfUpgrade kernel-tools-libsUpgrade kernel-abi-stablelists | Oct 8, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-tools-libsUpgrade python3-perfUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade bpftool | Nov 5, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp8 | — | Upgrade perfUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade bpftoolUpgrade kernelUpgrade python3-perfUpgrade kernel-headersUpgrade kernel-develUpgrade python-perf | 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 kernel-default-baseUpgrade dtb-mediatekUpgrade kernel-xen-baseUpgrade kernel-default-livepatchUpgrade kernel-ec2Upgrade dtb-alteraUpgrade dtb-amazonUpgrade kernel-azure-optionalUpgrade dtb-allwinnerUpgrade kernel-debugUpgrade gfs2-kmp-64kbUpgrade ocfs2-kmp-azureUpgrade kernel-64kbUpgrade kernel-rt-livepatchUpgrade kernel-develUpgrade kernel-rt_debugUpgrade dtb-renesasUpgrade dtb-caviumUpgrade kernel-default-develUpgrade dtb-sprdUpgrade kselftests-kmp-rtUpgrade dlm-kmp-defaultUpgrade dtb-appleUpgrade reiserfs-kmp-defaultUpgrade kernel-debug-develUpgrade kernel-trace-develUpgrade kernel-devel-rtUpgrade kernel-xenUpgrade dtb-marvellUpgrade reiserfs-kmp-rtUpgrade kernel-default-livepatch-develUpgrade dtb-hisiliconUpgrade kernel-64kb-livepatch-develUpgrade kernel-symsUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-source-vanillaUpgrade kernel-docsUpgrade dtb-xilinxUpgrade kernel-64kb-optionalUpgrade dtb-amdUpgrade kernel-defaultUpgrade kernel-rt_debug-livepatch-develUpgrade ocfs2-kmp-defaultUpgrade cluster-md-kmp-rtUpgrade dtb-armUpgrade kernel-64kb-develUpgrade kernel-rt-develUpgrade dtb-socionextUpgrade kernel-azure-extraUpgrade gfs2-kmp-azureUpgrade gfs2-kmp-defaultUpgrade dlm-kmp-rtUpgrade dtb-freescaleUpgrade kernel-xen-develUpgrade kernel-64kb-extraUpgrade kernel-trace-baseUpgrade kernel-preempt-develUpgrade cluster-md-kmp-64kbUpgrade kernel-default-optionalUpgrade kernel-kvmsmall-develUpgrade dtb-apmUpgrade cluster-md-kmp-azureUpgrade kernel-zfcpdumpUpgrade kernel-devel-azureUpgrade kernel-azure-vdsoUpgrade kernel-kvmsmallUpgrade kernel-syms-azureUpgrade kernel-ec2-develUpgrade dtb-nvidiaUpgrade kernel-source-rtUpgrade kernel-source-azureUpgrade gfs2-kmp-rtUpgrade ocfs2-kmp-64kbUpgrade dlm-kmp-azureUpgrade kernel-azure-livepatch-develUpgrade reiserfs-kmp-64kbUpgrade kernel-rt-vdsoUpgrade dtb-amlogicUpgrade reiserfs-kmp-azureUpgrade dlm-kmp-64kbUpgrade kernel-rt-extraUpgrade kernel-default-vdsoUpgrade kernel-sourceUpgrade kernel-default-base-rebuildUpgrade dtb-qcomUpgrade kernel-docs-htmlUpgrade kselftests-kmp-64kbUpgrade kernel-rt-optionalUpgrade kernel-obs-buildUpgrade kernel-ec2-baseUpgrade kernel-azureUpgrade kernel-preemptUpgrade ocfs2-kmp-rtUpgrade dtb-lgUpgrade kernel-traceUpgrade kernel-rt_debug-develUpgrade dtb-broadcomUpgrade kernel-obs-qaUpgrade kernel-default-extraUpgrade dtb-rockchipUpgrade dtb-exynosUpgrade kselftests-kmp-defaultUpgrade kernel-syms-rtUpgrade kernel-azure-baseUpgrade kernel-rt_debug-vdsoUpgrade kernel-rtUpgrade kernel-macrosUpgrade kernel-rt-livepatch-develUpgrade kernel-debug-livepatch-develUpgrade kernel-default-manUpgrade kernel-debug-vdsoUpgrade kernel-kvmsmall-vdsoUpgrade kselftests-kmp-azureUpgrade kernel-azure-develUpgrade cluster-md-kmp-default | 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