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