GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel GHES: CXL CPER work locks taken without IRQ protection can deadlock a CPU

UnscoredCVE-2026-89589Kernel, userspace & hypervisorcurated

Impact

The CXL CPER work registration helpers take cxl_cper_work_lock and cxl_cper_prot_err_work_lock with a plain spinlock guard that leaves local interrupts enabled, while the post paths take the same locks from hard IRQ context in the GHES error notification path. If a GHES interrupt lands on a CPU that already holds one of these locks, the handler spins on a lock whose holder it has preempted, and the CPU deadlocks. On PREEMPT_RT the plain spinlock is an rt_mutex and cannot be taken from hard IRQ at all. This matters on GPU nodes using CXL memory expansion: the trigger is a hardware error report, so the node hangs precisely when it is already reporting a memory problem, and recovery is a hard reboot. The same patch closes a use-after-free window where a CPER interrupt could schedule work on a pointer about to be freed during module exit.

Who can reach it

No network or tenant path - the trigger is a platform hardware error delivered through GHES while the CXL CPER registration or unregistration path holds the lock, i.e. module load/unload racing a real firmware error report. Local privileged (module) activity plus hardware error timing.

What to do

Patch the host kernel to a stable release converting both locks to raw_spinlock_t and restructuring the unregister paths (commits below), then reboot the node. Nodes without CXL memory devices or with GHES CPER for CXL unused are not exposed. The record names no vendor fixed-version string beyond the stable commits.

References

Related entries

All Kernel, userspace & hypervisor entries

This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.