CVE-2026-53042 Overview
CVE-2026-53042 affects the Linux kernel's fwctl subsystem. The vulnerability stems from incorrect class initialization ordering between the CXL (Compute Express Link) driver and the fwctl subsystem. Both drivers use module_init, but CXL is linked before fwctl in drivers/Makefile, so cxl_pci_driver_init() executes first. When cxl_pci_probe() calls fwctl_register() followed by device_add(), the fwctl_class is not yet registered. This causes class_to_subsys() to return NULL and skip knode_class initialization. On subsequent device removal, device_del() invokes klist_del() on the uninitialized knode, triggering a NULL pointer dereference [CWE-476].
Critical Impact
A NULL pointer dereference in kernel code triggered during CXL device removal causes a kernel crash, resulting in denial of service on affected Linux systems.
Affected Products
- Linux kernel versions containing the fwctl subsystem with CXL PCI driver support
- Systems with CXL hardware where cxl_pci_driver_init() initializes before fwctl_init()
- Distributions shipping unpatched Linux kernels with the affected initialization order
Discovery Timeline
- 2026-06-24 - CVE-2026-53042 published to NVD
- 2026-06-24 - Last updated in NVD database
Technical Details for CVE-2026-53042
Vulnerability Analysis
The fwctl (firmware control) subsystem in the Linux kernel provides a generic interface for managing device firmware. The defect arises from a module initialization ordering dependency between fwctl and the CXL PCI driver. Because drivers/Makefile links CXL before fwctl, the CXL initializer runs first at boot.
During CXL device probing, cxl_pci_probe() calls fwctl_register() to register a firmware control device, then invokes device_add(). At this point, fwctl_init() has not yet executed, so fwctl_class remains unregistered. The call to class_to_subsys() returns NULL, and the kernel skips initialization of the knode_class structure embedded in the device.
The latent corruption surfaces during teardown. When the device is removed, fwctl_init() has since run and registered the class. class_to_subsys() now returns a valid pointer, so device_del() proceeds to call klist_del() on the knode_class that was never initialized, dereferencing a NULL list pointer.
Root Cause
The root cause is an init-order dependency that violates the assumption that fwctl_class is registered before any consumer calls fwctl_register(). The CXL driver and fwctl both use module_init, which assigns initialization order based on link order in drivers/Makefile rather than explicit dependency tracking.
Attack Vector
Exploitation requires local access and the presence of CXL hardware or the ability to trigger CXL device probe and removal cycles. Triggering the bug requires kernel-level events (device hotplug, module unload, or hardware removal). The fix reorders class registration so fwctl_class is initialized before any registrar can call into it. Refer to the kernel commits 1075f2f590fd, a28f56988c8e, and a55f80233f38 for the upstream patches.
Detection Methods for CVE-2026-53042
Indicators of Compromise
- Kernel oops or panic messages referencing klist_del, device_del, or fwctl in dmesg output
- Unexpected system crashes correlated with CXL device hotplug or removal events
- Stack traces showing NULL pointer dereferences originating from the fwctl registration path
Detection Strategies
- Audit running kernel versions against the patched commits listed in the upstream stable tree
- Inspect /proc/version and distribution kernel changelogs to confirm whether the fwctl class ordering fix is included
- Correlate CXL device events in system logs with kernel crash reports captured by kdump or systemd-coredump
Monitoring Recommendations
- Forward kernel ring buffer messages and journald logs to a centralized logging platform for crash pattern analysis
- Monitor host availability and unexpected reboots on systems equipped with CXL hardware
- Track kernel module load order and verify fwctl initializes before consumers register devices
How to Mitigate CVE-2026-53042
Immediate Actions Required
- Apply the upstream Linux kernel patches that correct the fwctl class initialization ordering
- Update to a distribution kernel that includes the stable-tree backports referenced in the kernel.org commits
- Restrict physical and administrative access to systems with CXL hardware until patches are deployed
Patch Information
The fix is available in the upstream Linux stable tree through commits 1075f2f590fd, a28f56988c8e, and a55f80233f38. The patches ensure the fwctl class is registered before any driver calls fwctl_register(), preventing the uninitialized knode_class condition.
Workarounds
- Avoid runtime removal or hotplug operations on CXL devices on unpatched kernels
- Disable the CXL PCI driver via kernel command line or module blacklist if CXL functionality is not required
- Defer CXL hardware deployment on production hosts until kernels carrying the fix are validated
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

