ZeroHour

CVE-2026-89570

niche

Use-After-Free in Linux Kernel CXL MCE Notifier Handling

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's CXL (Compute Express Link) machine-check-exception (MCE) notifier was registered per memory device and stored in 'struct cxl_memdev_state', even though the handler only needs region state (the region's SPA range and extended linear cache size). This mismatched lifetime can leave the notifier referencing freed or NULL state when the memory device or endpoint goes away while the region persists, resulting in NULL pointer dereferences and use-after-free inside the kernel's MCE handler. A local attacker with low privileges who can induce or race the relevant memory-device teardown and machine-check handling on an affected CXL region could corrupt kernel memory, with the CVSS 3.1 score of 7.8 reflecting high impact to confidentiality, integrity, and availability (i.e., potential local privilege escalation or kernel crash). Only systems actually using CXL memory regions configured with an extended linear cache exercise the vulnerable code path. No public proof of concept is known and there is no evidence of exploitation in the wild.

What to do: Apply a kernel containing the fix, which moves the MCE notifier into 'struct cxl_region' and registers it only for regions with an extended linear cache, as soon as your distro ships a backport; check with your vendor for the patched kernel version. If you do not run CXL-backed memory regions with extended linear caches, the vulnerable path is not exercised and risk is minimal. In the interim, restrict local unprivileged shell access on CXL-equipped hosts and monitor kernel logs for oopses or warnings originating from the CXL/MCE handler paths.

Affected
Linux kernel (cxl/mce subsystem)
Estimated exposure
nichelikely low thousands to low tens of thousands of servers worldwide (clearly an estimate) — CXL memory devices with extended linear caches are early-generation datacenter/server hardware found in only a small fraction of deployments, and the bug additionally requires a configured CXL region with an extended linear cache to be…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: cxl/mce: Make the MCE notifier per-region Flavien Solt reported lifetime issues with the CXL MCE notifier, which can lead to NULL dereferences and use-after-free in the MCE handler. The notifier was registered per memory device and stored in 'struct cxl_memdev_state', even though it only needs the region state (the region's SPA range and its extended linear cache size). Instead of keeping the memory device and endpoint alive, the correct fix is to move the notifier into 'struct cxl_region' and register it from cxl_region_probe() as it should be a per-region notifier. Setup the registration to only happen for regions that have an extended linear cache as that is the only current usage. Remove cxl_port_get_spa_cache_alias() as it is now dead code. [ dj: Update dev_warn() when notifier fails due to kconfig. (Ben) ]

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.