KernelScan.io

HIGH Introduced in 6.15

cxl MceNotifier UAF

CVE-2026-89570

CVSS 7.8 / 10.0 NVD

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

KernelScan AI6.6MEDIUM

01

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) ]

02

Engine v0.6.0

Risk summary

A lifetime mismatch in the CXL MCE notifier can cause use-after-free or NULL pointer dereference when a machine check exception fires during CXL device teardown. Exploitation requires CXL hardware configured with an extended linear cache and root-level access to trigger device removal, plus a race window with a hardware memory error. The primary realistic impact is a kernel panic, though the use-after-free primitive could in principle be leveraged for broader memory corruption.

Affecteddrivers/cxl/core/mce.c (cxl/mce)

Vulnerability analysis

The CXL machine-check exception notifier was registered per memory device and tied to that device's lifetime, but its callback only needed region-level data to compute an aliased address. When a memory device is torn down while the notifier is still active, a subsequent hardware memory error can invoke the callback against the freed device state, causing a use-after-free or NULL pointer dereference. The fix moves the notifier into the region structure and registers it during region probe, so the notifier's lifetime matches the region whose data it actually uses, and the callback reads region parameters directly instead of traversing through a freed device. This vulnerability is reachable only on systems with CXL hardware configured for extended linear cache, and the race window opens during device or region teardown, which is a privileged operation requiring root or an equivalent capability.

03

BranchIntroducedFixed inPatch commit
6.186.156.18.515563db13c952
7.26.157.2.4491d8c9ac98d
mainline6.157.3775d0f4558f4