CVE-2026-93097: cxl/mbox: Break poison list loop on an empty payload
In the Linux kernel, the following vulnerability has been resolved:
cxl/mbox: Break poison list loop on an empty payload
A device that returns count == 0 with CXLPOISONFLAGMORE set on every iteration never advances nrrecords, so the maxerrors guard never trips and the do/while loops forever while holding poison.mutex. That hangs the sysfs-triggered scan thread and blocks all subsequent poison operations on the device. The existing "Protect against an uncleared FLAGMORE" guard was intended to bound a misbehaving device but does not cover the count == 0 case.
Stop the loop on an empty payload so a malfunctioning or malicious device cannot wedge the poison scan.
Affected Software
Event History
Frequently Asked Questions
What conditions are required to trigger the hang?
A CXL device must repeatedly return a poison-list response with count equal to 0 while keeping CXL_POISON_FLAG_MORE set. This can occur with a malfunctioning or malicious device during a poison-list scan.
What is the operational impact if the issue is triggered?
The sysfs-triggered poison scan thread loops indefinitely while holding poison.mutex. Subsequent poison operations for that device are blocked.
Are systems without CXL poison-list scanning exposed?
The described hang occurs in the sysfs-triggered poison scan path. The provided information does not identify other affected paths.
How can I recognize an affected device or incident?
A poison scan can hang and poison operations on the same device can remain blocked. The triggering device behavior is repeated empty poison-list payloads with the MORE flag set.