CVE-2026-23348: cxl: Fix race of nvdimm_bus object when creating nvdimm objects
In the Linux kernel, the following vulnerability has been resolved:
cxl: Fix race of nvdimm_bus object when creating nvdimm objects
Found issue during running of cxl-translate.sh unit test. Adding a 3s
sleep right before the test seems to make the issue reproduce fairly
consistently. The cxl_translate module has dependency on cxl_acpi and
causes orphaned nvdimm objects to reprobe after cxl_acpi is removed.
The nvdimm_bus object is registered by the cxl_nvb object when
cxl_acpi_probe() is called. With the nvdimm_bus object missing,
__nd_device_register() will trigger NULL pointer dereference when
accessing the dev->parent that points to &nvdimm_bus->dev.
[ 192.884510] BUG: kernel NULL pointer dereference, address: 000000000000006c
[ 192.895383] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20250812-19.fc42 08/12/2025
[ 192.897721] Workqueue: cxl_port cxl_bus_rescan_queue [cxl_core]
[ 192.899459] RIP: 0010:kobject_get+0xc/0x90
[ 192.924871] Call Trace:
[ 192.925959] <TASK>
[ 192.926976] ? pm_runtime_init+0xb9/0xe0
[ 192.929712] __nd_device_register.part.0+0x4d/0xc0 [libnvdimm]
[ 192.933314] __nvdimm_create+0x206/0x290 [libnvdimm]
[ 192.936662] cxl_nvdimm_probe+0x119/0x1d0 [cxl_pmem]
[ 192.940245] cxl_bus_probe+0x1a/0x60 [cxl_core]
[ 192.943349] really_probe+0xde/0x380
This patch also relies on the previous change where
devm_cxl_add_nvdimm_bridge() is called from drivers/cxl/pmem.c instead
of drivers/cxl/core.c to ensure the dependency of cxl_acpi on cxl_pmem.
1. Set probe_type of cxl_nvb to PROBE_FORCE_SYNCHRONOUS to ensure the
driver is probed synchronously when add_device() is called.
2. Add a check in __devm_cxl_add_nvdimm_bridge() to ensure that the
cxl_nvb driver is attached during cxl_acpi_probe().
3. Take the cxl_root uport_dev lock and the cxl_nvb->dev lock in
devm_cxl_add_nvdimm() before checking nvdimm_bus is valid.
4. Set cxl_nvdimm flag to CXL_NVD_F_INVALIDATED so cxl_nvdimm_probe()
will exit with -EBUSY.
The removal of cxl_nvdimm devices should prevent any orphaned devices
from probing once the nvdimm_bus is gone.
[ dj: Fixed 0-day reported kdoc issue. ]
[ dj: Fix cxl_nvb reference leak on error. Gregory (kreview-0811365) ]
Security readout for executives and security teams
Plain-English summary
CVE-2026-23348 is a Linux kernel race condition in CXL persistent-memory handling. Under specific CXL/NVDIMM module timing, the kernel can reference a missing bus object and hit a NULL pointer dereference. The source indicates a crash-style availability risk, not data theft or remote code execution.
Executive priority
Treat this as a targeted Linux kernel availability issue. Prioritize patch validation for infrastructure using CXL or persistent memory, but do not escalate as internet-wide emergency based on the supplied evidence.
Technical view
The issue occurs when cxl_translate depends on cxl_acpi, causing orphaned nvdimm objects to reprobe after cxl_acpi removal. Without nvdimm_bus, __nd_device_register() dereferences dev->parent through nvdimm_bus->dev. Kernel fixes add synchronous probing, attachment validation, locking, invalidation, and orphan prevention.
Likely exposure
Exposure appears limited to Linux systems using CXL persistent-memory/libnvdimm paths or test/virtual environments exercising those modules. The source lists Linux as affected, but does not provide distribution package mappings or hardware prevalence.
Exploitation context
The issue was found during cxl-translate.sh unit testing and made reproducible by timing changes. No KEV listing is present, and the supplied sources do not state active exploitation, public exploit availability, or remote attackability.
Researcher notes
The public record lacks CVSS, CWE, exploit status, and distribution-specific affected ranges. Analysis should focus on the CXL ACPI, cxl_pmem, and libnvdimm object-lifetime race fixed by the stable commits.
Mitigation direction
Apply kernel updates containing the referenced stable fixes when available for your distribution.
Check Linux vendor advisories for exact affected package versions and backport status.
Prioritize systems using CXL, NVDIMM, or persistent-memory kernel modules.
If updates are unavailable, review vendor guidance before disabling related modules.
Validation and detection
Inventory kernels and identify systems with CXL or NVDIMM support enabled.
Compare installed kernel builds against distribution advisories for CVE-2026-23348.
Confirm whether referenced stable commits are included or backported.
Review kernel logs for CXL/NVDIMM probe failures or NULL pointer dereference traces.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-23348 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Mar 25, 2026, 10:27 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.