gpio: ml-ioh: use raw_spinlock_t for the register lock
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.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.267, 5.15.218, 6.1.185, 6.12.106, 6.18.46, 6.6.154, 7.1.10
- CVEs
- CVE-2026-80562
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 02:34 UTC · Revision 1
Source evidence
gpio: ml-ioh: use raw_spinlock_t for the register lock
core-osv · Original sourcePublished 26 Aug 2026, 14:37 UTC
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.
osv:CVE-2026-80562
Kernel
Fixed versions: 5.10.267, 5.15.218, 6.1.185, 6.6.154, 6.12.106, 6.18.46, 7.1.10
Complete source record
{
"id": "2cfea4730bbc0e51783bce439980f2c9740978bcf6d3efdb53670887cefa1717",
"url": "https://osv.dev/vulnerability/CVE-2026-80562",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "gpio: ml-ioh: use raw_spinlock_t for the register lock",
"summary": "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.",
"evidence": "osv:CVE-2026-80562",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.267",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.218",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.185",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.154",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.106",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.46",
"evidence": "/affected/1/ranges"
},
{
"value": "7.1.10",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2026-80562",
"aliases": [
"CVE-2026-80562"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "54be566317b6aece2389a95bb19ea209af9359be"
},
{
"fixed": "431b10133113537660a6090a2856b0d74d1b06de"
},
{
"fixed": "359e6b1168c9a62a7bd214ace476aaa2d57eebe8"
},
{
"fixed": "63d2230e5076c12f93d2a1d1bff2fbbf6cf32f3c"
},
{
"fixed": "b6505a4cea45dd92eb753581b1ad9b524b5fcc34"
},
{
"fixed": "84be002b40d30c56a91873b236e2d9001bbee363"
},
{
"fixed": "bc7934d0acd4fc1c7e5b7c68debdb4a991121628"
},
{
"fixed": "0559b86611c35d342dd48542ea26a9e437046bf6"
},
{
"fixed": "600411ea1f2443fdf5b1af9b6480f616d7aff9d0"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80562.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "3.2.0"
},
{
"fixed": "5.10.267"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.218"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.185"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.154"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.106"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.46"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "7.1.10"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80562.json"
}
}
],
"modified": "2026-10-28T02:30:32.610369331Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0559b86611c35d342dd48542ea26a9e437046bf6",
"https://git.kernel.org/stable/c/359e6b1168c9a62a7bd214ace476aaa2d57eebe8",
"https://git.kernel.org/stable/c/431b10133113537660a6090a2856b0d74d1b06de",
"https://git.kernel.org/stable/c/600411ea1f2443fdf5b1af9b6480f616d7aff9d0",
"https://git.kernel.org/stable/c/63d2230e5076c12f93d2a1d1bff2fbbf6cf32f3c",
"https://git.kernel.org/stable/c/84be002b40d30c56a91873b236e2d9001bbee363",
"https://git.kernel.org/stable/c/b6505a4cea45dd92eb753581b1ad9b524b5fcc34",
"https://git.kernel.org/stable/c/bc7934d0acd4fc1c7e5b7c68debdb4a991121628",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80562.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-80562",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80562.json"
}
},
"related_cves": [
{
"value": "CVE-2026-80562",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 499711,
"published_at": "2026-08-26T14:37:27.171+00:00"
}