CVE-2026-80562 in Linux
Resumen
por VulDB • 2026-08-26
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
gpio: ml-ioh: usar raw_spinlock_t para el bloqueo del registro
ioh_irq_type() está registrado como la devolución de llamada .irq_set_type de irq_chip y toma chip->spinlock con spin_lock_irqsave(). Esta devolución de llamada se alcanza desde __setup_irq() -> __irq_set_trigger() -> chip->irq_set_type(), mientras que el llamador mantiene desc->lock, un raw_spinlock_t, con las interrupciones hard deshabilitadas. Ese contexto no es susceptible a bloqueos (no sleepable), pero en PREEMPT_RT un spinlock_t regular es un bloqueo dormible respaldado por rtmutex, por lo que adquirirlo allí es inválido. ioh_irq_enable() e ioh_irq_disable() toman el mismo bloqueo desde las devoluciones de llamada .irq_enable/.irq_disable, que también se invocan con desc->lock mantenida.
Convertir el bloqueo del registro a raw_spinlock_t. El mismo bloqueo también serializa las devoluciones de llamada GPIO para dirección/valor y la guardado/restauración de registros en suspensión/reanudación, y esas secciones críticas solo realizan secuencias cortas de accesos a registros MMIO (ioread32()/iowrite32()); la devolución de llamada .irq_set_type además emite un dev_warn() ante un tipo no soportado. Ninguna de estas operaciones es susceptible a bloqueos, por lo que mantener este bloqueo del registro como no dormible es apropiado para las devoluciones de llamadas irqchip y no cambia el contrato de bloqueo del lado GPIO.
Esta es la misma corrección que el commit a02b8950d619 ("gpio: pch: usar raw_spinlock_t para el bloqueo del registro"); este controlador comparte la misma estructura que gpio-pch.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.