CVE-2026-89570

cxl/mce: Make the MCE notifier per-region

Published Sep 11, 2026 CVSS 3.1 · 7.8 High EPSS < 1% KEV · Not listed
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) ]

Analysis

AI-generated

Technical impact

The vulnerability arises from a lifetime management flaw in the Linux kernel's CXL Memory Control Engine notifier. The notifier was freed prematurely. When the kernel later accessed the stale notifier reference during a machine‑exception event, it performed a NULL pointer dereference or a use-after‑free, causing a kernel crash. The weakness is a classic invalid memory reference (CWE-476).

Affected Systems

All Linux kernel releases that contain the pre‑fix notifier implementation are affected. The fix is included in commits referenced in the CVE description and is available in kernel versions that incorporate those changes. Systems running any older kernel that has not been updated to include those commits remain vulnerable.

Risk and Exploitability

The CVSS score of 7.8 classifies the flaw as high severity. The EPSS score of < 1 % indicates a very low exploitation probability. The CVE is not listed in the CISA KEV catalog. Because the flaw requires a CXL device to trigger the notifier and a machine‑exception event, the attack surface is narrow. The likely attack vector is an attacker with ability to cause or observe a machine‑exception on a system with CXL support. Given these constraints, widespread exploitation is unlikely, but the kernel crash results in denial of service, so timely patching is essential.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a release that includes the commit adding per‑region notifier for CXL MCE, thereby eliminating the NULL dereference/use‑after‑free flaw (CWE-476).
  • If upgrading is not possible immediately, compile the kernel with the CXL MCE driver disabled (CONFIG_CXL_MCE=n) to prevent the vulnerable notifier from being registered.
  • Monitor kernel logs (dmesg/journal) for CXL MCE errors and consider postponing the use of CXL hardware until a patched kernel is available.

Generated by OpenCVE AI on September 15, 2026 at 21:49 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Ubuntu USN Ubuntu USN USN-9019-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-9020-1 Linux kernel vulnerabilities
History
Type Values Removed Values Added
Metrics cvssV3_1

{'score': 4.1, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H'}

cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

Type Values Removed Values Added
Weaknesses CWE-416
Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.1, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate

Type Values Removed Values Added
Weaknesses CWE-416
CWE-476
Type Values Removed Values Added
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) ]
Title cxl/mce: Make the MCE notifier per-region
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References
Weaknesses

Sources

Status
PUBLISHED
Assigner
Linux
Published
Updated
Oct 19, 2026, 8:49 AM
Reserved
Sep 11, 2026, 7:38 PM
Status
Received
Published
Sep 11, 2026, 8:19 PM
Modified
Oct 19, 2026, 9:17 AM
Severity
Moderate
Public date
Sep 11, 2026, 7:44 PM