In the Linux kernel, the following vulnerability has been resolved:
gpio: ml-ioh: use rawspinlockt for the register lock
iohirqtype() is registered as the irqchip .irqsettype callback and takes chip->spinlock with spinlock_irqsave(). This callback is reached from __setup_irq() -> __irqsettrigger() -> chip->irqsettype() while the caller holds desc->lock, a rawspinlockt, with hardirqs disabled. That context is not sleepable, but on PREEMPTRT a regular spinlockt is an rtmutex-backed sleeping lock, so acquiring it there is invalid. iohirqenable() and iohirqdisable() take the same lock from the .irqenable/.irqdisable callbacks, which are likewise invoked with desc->lock held.
Convert the register lock to rawspinlockt. The same lock also serializes the GPIO direction/value callbacks and the suspend/resume register save/restore, and those critical sections only perform short sequences of MMIO register accesses (ioread32()/iowrite32()); the .irqsettype callback additionally emits a dev_warn() on an unsupported type. None of these are sleepable operations, so keeping this register lock non-sleeping is appropriate for the irqchip callbacks and does not change the GPIO-side locking contract.
This is the same fix as commit a02b8950d619 ("gpio: pch: use rawspinlockt for the register lock"); this driver shares the same structure as gpio-pch.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80562.json",
"cna_assigner": "Linux"
}