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