In the Linux kernel, the following vulnerability has been resolved:
cxl/port: Fix delete_endpoint() vs parent unregistration race
The CXL subsystem, at cxl_mem ->probe() time, establishes a lineage of ports (struct cxl_port objects) between an endpoint and the root of a CXL topology. Each port including the endpoint port is attached to the cxl_port driver.
Given that setup, it follows that when either any port in that lineage goes through a cxl_port ->remove() event, or the memdev goes through a cxl_mem ->remove() event. The hierarchy below the removed port, or the entire hierarchy if the memdev is removed needs to come down.
The delete_endpoint() callback is careful to check whether it is being called to tear down the hierarchy, or if it is only being called to teardown the memdev because an ancestor port is going through ->remove().
That care needs to take the device_lock() of the endpoint's parent. Which requires 2 bugs to be fixed:
1/ A reference on the parent is needed to prevent use-after-free scenarios like this signature:
BUG: spinlock bad magic on CPU#0, kworker/u56:0/11 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20230524-3.fc38 05/24/2023 Workqueue: cxl_port detach_memdev [cxl_core] RIP: 0010:spin_bug+0x65/0xa0 Call Trace: do_raw_spin_lock+0x69/0xa0 __mutex_lock+0x695/0xb80 delete_endpoint+0xad/0x150 [cxl_core] devres_release_all+0xb8/0x110 device_unbind_cleanup+0xe/0x70 device_release_driver_internal+0x1d2/0x210 detach_memdev+0x15/0x20 [cxl_core] process_one_work+0x1e3/0x4c0 worker_thread+0x1dd/0x3d0
2/ In the case of RCH topologies, the parent device that needs to be locked is not always @port->dev as returned by cxl_mem_find_port(), use endpoint->dev.parent instead.
CVSS Details
- CVSS 3.1 Base Score: 4.7
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-rt-debug-develUpgrade kernel-rt-debug-modules-extraUpgrade kernel-modulesUpgrade kernel-rt-debug-modules-coreUpgrade kernel-modules-coreUpgrade rtlaUpgrade kernel-64k-devel-matchedUpgrade kernel-debug-develUpgrade kernel-uki-virtUpgrade kernel-docUpgrade kernel-rt-modules-coreUpgrade kernel-headersUpgrade kernel-zfcpdump-coreUpgrade kernel-64k-coreUpgrade kernel-zfcpdump-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-debug-devel-matchedUpgrade libperfUpgrade kernel-64k-debugUpgrade kernel-tools-libs-develUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-devel-matchedUpgrade perfUpgrade kernel-abi-stablelistsUpgrade kernel-zfcpdump-develUpgrade kernel-64k-debug-modules-extraUpgrade kernel-64k-develUpgrade kernel-64k-modulesUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-64k-modules-coreUpgrade kernel-debug-uki-virtUpgrade kernelUpgrade kernel-debug-modules-coreUpgrade kernel-64k-debug-modules-coreUpgrade kernel-rt-debug-coreUpgrade kernel-rt-develUpgrade kernel-64k-debug-coreUpgrade kernel-toolsUpgrade python3-perfUpgrade kernel-zfcpdumpUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-debugUpgrade kernel-tools-libsUpgrade rvUpgrade kernel-debug-modulesUpgrade kernel-modules-extraUpgrade kernel-64kUpgrade kernel-64k-debug-develUpgrade kernel-coreUpgrade kernel-cross-headersUpgrade kernel-debugUpgrade bpftoolUpgrade kernel-develUpgrade kernel-rt-coreUpgrade kernel-rt-modules-extraUpgrade kernel-64k-modules-extraUpgrade kernel-rt-debug-modulesUpgrade kernel-64k-debug-modulesUpgrade kernel-rtUpgrade kernel-rt-modulesUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-debug-core | Nov 4, 2024 | May 21, 2024 |
| Debian | — | Upgrade linux | May 15, 2025 | May 21, 2024 |
| Oracle_linux | — | Upgrade kernel | Oct 16, 2024 | May 21, 2024 |
| Redhat_linux | — | No solution existsUpgrade kernel-rtUpgrade kernel | Sep 13, 2024 | May 21, 2024 |
| Suse | — | Upgrade kernel-64kb-livepatch-develUpgrade kernel-rt_debug-livepatch-develUpgrade kselftests-kmp-rtUpgrade dtb-mediatekUpgrade dtb-caviumUpgrade kernel-default-develUpgrade dtb-hisiliconUpgrade kernel-64kb-extraUpgrade kernel-debugUpgrade reiserfs-kmp-rtUpgrade kernel-default-vdsoUpgrade kernel-azure-optionalUpgrade gfs2-kmp-defaultUpgrade kernel-default-baseUpgrade kernel-64kb-optionalUpgrade dtb-amazonUpgrade kernel-symsUpgrade ocfs2-kmp-azureUpgrade kernel-zfcpdumpUpgrade dtb-socionextUpgrade kernel-kvmsmall-develUpgrade cluster-md-kmp-azureUpgrade kernel-azure-extraUpgrade reiserfs-kmp-azureUpgrade cluster-md-kmp-rtUpgrade dtb-lgUpgrade ocfs2-kmp-defaultUpgrade dtb-allwinnerUpgrade dtb-armUpgrade gfs2-kmp-azureUpgrade dtb-amdUpgrade kernel-default-livepatch-develUpgrade kernel-default-optionalUpgrade kernel-64kb-develUpgrade kernel-source-azureUpgrade gfs2-kmp-64kbUpgrade kernel-debug-develUpgrade dtb-apmUpgrade reiserfs-kmp-defaultUpgrade kernel-develUpgrade ocfs2-kmp-rtUpgrade dtb-freescaleUpgrade dtb-xilinxUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-rt-develUpgrade dlm-kmp-defaultUpgrade kernel-64kbUpgrade dtb-alteraUpgrade dtb-renesasUpgrade dtb-appleUpgrade kernel-devel-rtUpgrade kselftests-kmp-64kbUpgrade dtb-amlogicUpgrade cluster-md-kmp-defaultUpgrade kernel-obs-buildUpgrade kernel-source-rtUpgrade kernel-rt-extraUpgrade kernel-docs-htmlUpgrade dlm-kmp-rtUpgrade kernel-devel-azureUpgrade kernel-macrosUpgrade kernel-sourceUpgrade dtb-marvellUpgrade dtb-broadcomUpgrade kernel-rt_debug-develUpgrade kernel-rt-optionalUpgrade kernel-docsUpgrade kernel-defaultUpgrade gfs2-kmp-rtUpgrade dtb-sprdUpgrade kernel-rt_debug-vdsoUpgrade kernel-debug-vdsoUpgrade kernel-azure-develUpgrade kernel-azure-livepatch-develUpgrade kernel-rt-vdsoUpgrade kernel-default-base-rebuildUpgrade kernel-source-vanillaUpgrade reiserfs-kmp-64kbUpgrade ocfs2-kmp-64kbUpgrade kselftests-kmp-defaultUpgrade kernel-rt-livepatch-develUpgrade kernel-kvmsmall-vdsoUpgrade kernel-obs-qaUpgrade kernel-kvmsmallUpgrade kernel-default-extraUpgrade cluster-md-kmp-64kbUpgrade dtb-nvidiaUpgrade kernel-rt_debugUpgrade dtb-qcomUpgrade dlm-kmp-64kbUpgrade kernel-syms-azureUpgrade dtb-rockchipUpgrade kernel-syms-rtUpgrade kernel-rtUpgrade kernel-default-livepatchUpgrade kernel-debug-livepatch-develUpgrade kernel-azure-vdsoUpgrade kernel-azureUpgrade dtb-exynosUpgrade dlm-kmp-azureUpgrade kselftests-kmp-azure | Jun 24, 2024 | May 21, 2024 |
| Ubuntu | — | Upgrade linux-nvidia-6.5 | Nov 19, 2024 | 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