CVE-2026-80562

gpio: ml-ioh: use raw_spinlock_t for the register lock

State
Published
Severity
Not scored
Published
Aug 26, 2026
Updated
Aug 27, 2026
Reserved
Aug 26, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

gpio: ml-ioh: use raw_spinlock_t for the register lock

ioh_irq_type() is registered as the irq_chip .irq_set_type callback and takes chip->spinlock with spin_lock_irqsave(). This callback is reached from __setup_irq() -> __irq_set_trigger() -> chip->irq_set_type() while the caller holds desc->lock, a raw_spinlock_t, with hardirqs disabled. That context is not sleepable, but on PREEMPT_RT a regular spinlock_t is an rtmutex-backed sleeping lock, so acquiring it there is invalid. ioh_irq_enable() and ioh_irq_disable() take the same lock from the .irq_enable/.irq_disable callbacks, which are likewise invoked with desc->lock held.

Convert the register lock to raw_spinlock_t. 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 .irq_set_type 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 raw_spinlock_t for the register lock"); this driver shares the same structure as gpio-pch.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 54be566317b6aece2389a95bb19ea209af9359be to before 431b10133113537660a6090a2856b0d74d1b06deAffected
  • 54be566317b6aece2389a95bb19ea209af9359be to before 359e6b1168c9a62a7bd214ace476aaa2d57eebe8Affected
  • 54be566317b6aece2389a95bb19ea209af9359be to before 63d2230e5076c12f93d2a1d1bff2fbbf6cf32f3cAffected
  • 54be566317b6aece2389a95bb19ea209af9359be to before b6505a4cea45dd92eb753581b1ad9b524b5fcc34Affected
  • 54be566317b6aece2389a95bb19ea209af9359be to before 84be002b40d30c56a91873b236e2d9001bbee363Affected
  • 54be566317b6aece2389a95bb19ea209af9359be to before bc7934d0acd4fc1c7e5b7c68debdb4a991121628Affected
  • 54be566317b6aece2389a95bb19ea209af9359be to before 0559b86611c35d342dd48542ea26a9e437046bf6Affected
  • 54be566317b6aece2389a95bb19ea209af9359be to before 600411ea1f2443fdf5b1af9b6480f616d7aff9d0Affected
LinuxLinux
  • 3.2Affected
  • before 3.2Not affected
  • 5.10.267 through 5.10.*Not affected
  • 5.15.218 through 5.15.*Not affected
  • 6.1.185 through 6.1.*Not affected
  • 6.6.154 through 6.6.*Not affected
  • 6.12.106 through 6.12.*Not affected
  • 6.18.46 through 6.18.*Not affected
  • 7.1.10 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.