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