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