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-modulesUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-64k-modulesUpgrade kernel-debug-uki-virtUpgrade kernel-64k-debug-modules-coreUpgrade kernelUpgrade kernel-64k-develUpgrade kernel-tools-libsUpgrade kernel-zfcpdumpUpgrade python3-perfUpgrade kernel-debugUpgrade kernel-64k-modules-coreUpgrade kernel-64k-debug-coreUpgrade kernel-debug-coreUpgrade kernel-debug-modulesUpgrade kernel-modules-extraUpgrade kernel-rtUpgrade kernel-cross-headersUpgrade kernel-rt-debugUpgrade kernel-rt-coreUpgrade rvUpgrade kernel-develUpgrade kernel-toolsUpgrade kernel-rt-debug-coreUpgrade kernel-64k-modules-extraUpgrade kernel-rt-develUpgrade kernel-64k-debug-develUpgrade kernel-64k-debug-modulesUpgrade kernel-rt-modules-extraUpgrade kernel-64k-debug-devel-matchedUpgrade bpftoolUpgrade kernel-rt-modulesUpgrade kernel-debug-modules-coreUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-coreUpgrade kernel-64kUpgrade kernel-modulesUpgrade perfUpgrade kernel-devel-matchedUpgrade kernel-rt-debug-modules-extraUpgrade kernel-modules-coreUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-uki-virtUpgrade kernel-rt-debug-develUpgrade kernel-debug-develUpgrade kernel-64k-debugUpgrade kernel-zfcpdump-modulesUpgrade rtlaUpgrade libperfUpgrade kernel-tools-libs-develUpgrade kernel-zfcpdump-coreUpgrade kernel-debug-devel-matchedUpgrade kernel-64k-coreUpgrade kernel-abi-stablelistsUpgrade kernel-zfcpdump-develUpgrade kernel-rt-modules-coreUpgrade kernel-64k-devel-matchedUpgrade kernel-64k-debug-modules-extraUpgrade kernel-docUpgrade kernel-headersUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-modules-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 | — | Upgrade kernel-rtUpgrade kernelNo solution exists | Sep 13, 2024 | May 21, 2024 |
| Suse | — | Upgrade kernel-develUpgrade ocfs2-kmp-rtUpgrade dtb-xilinxUpgrade ocfs2-kmp-defaultUpgrade kernel-symsUpgrade ocfs2-kmp-azureUpgrade cluster-md-kmp-rtUpgrade kernel-rt-develUpgrade dtb-hisiliconUpgrade kernel-64kbUpgrade kernel-64kb-livepatch-develUpgrade dlm-kmp-defaultUpgrade kernel-devel-rtUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-amdUpgrade kernel-default-baseUpgrade dtb-caviumUpgrade kernel-default-vdsoUpgrade gfs2-kmp-azureUpgrade cluster-md-kmp-azureUpgrade kernel-azure-optionalUpgrade kselftests-kmp-rtUpgrade kernel-debug-develUpgrade kernel-default-optionalUpgrade kernel-source-azureUpgrade kernel-zfcpdumpUpgrade gfs2-kmp-defaultUpgrade dtb-appleUpgrade dtb-alteraUpgrade dtb-allwinnerUpgrade kernel-azure-extraUpgrade reiserfs-kmp-defaultUpgrade dtb-freescaleUpgrade dtb-renesasUpgrade reiserfs-kmp-rtUpgrade kernel-debugUpgrade dtb-armUpgrade kernel-64kb-develUpgrade dtb-amazonUpgrade kernel-64kb-extraUpgrade gfs2-kmp-64kbUpgrade kernel-64kb-optionalUpgrade dtb-mediatekUpgrade kernel-default-develUpgrade kernel-kvmsmall-develUpgrade dtb-apmUpgrade reiserfs-kmp-azureUpgrade kernel-default-livepatch-develUpgrade dtb-socionextUpgrade dtb-lgUpgrade kernel-docsUpgrade kernel-rt_debug-develUpgrade kernel-devel-azureUpgrade kernel-default-livepatchUpgrade kernel-azure-vdsoUpgrade kernel-azureUpgrade dtb-exynosUpgrade dlm-kmp-azureUpgrade kernel-syms-rtUpgrade kernel-rtUpgrade kernel-debug-livepatch-develUpgrade dlm-kmp-rtUpgrade kernel-docs-htmlUpgrade kernel-source-rtUpgrade kernel-rt-extraUpgrade kernel-obs-buildUpgrade kernel-rt_debug-vdsoUpgrade kernel-defaultUpgrade dtb-broadcomUpgrade kernel-rt-optionalUpgrade gfs2-kmp-rtUpgrade dtb-sprdUpgrade dtb-marvellUpgrade kernel-kvmsmallUpgrade kernel-default-base-rebuildUpgrade cluster-md-kmp-defaultUpgrade kselftests-kmp-64kbUpgrade kernel-obs-qaUpgrade kernel-rt-livepatch-develUpgrade kernel-kvmsmall-vdsoUpgrade ocfs2-kmp-64kbUpgrade kselftests-kmp-defaultUpgrade reiserfs-kmp-64kbUpgrade kernel-source-vanillaUpgrade dtb-rockchipUpgrade kernel-rt_debugUpgrade dtb-qcomUpgrade cluster-md-kmp-64kbUpgrade kernel-syms-azureUpgrade dtb-nvidiaUpgrade dlm-kmp-64kbUpgrade kernel-default-extraUpgrade kernel-debug-vdsoUpgrade kernel-azure-livepatch-develUpgrade kernel-rt-vdsoUpgrade kernel-azure-develUpgrade kselftests-kmp-azureUpgrade dtb-amlogicUpgrade kernel-sourceUpgrade kernel-macros | 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