CVE-2026-64428

CVE-2026-64428

Medium · published July 25, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
1.9
In the wild
Unconfirmed
What it is

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

gpio: sch: use raw_spinlock_t in the irq startup path

sch_irq_unmask() enables the GPIO IRQ and then updates the controller

state through sch_irq_mask_unmask(), which takes sch->lock with

spin_lock_irqsave(). The callback can be reached from irq_startup()

while setting up a requested IRQ. That path is not sleepable, but on

PREEMPT_RT a regular spinlock_t becomes a sleeping lock.

This issue was found by our static analysis tool and then manually

reviewed against the current tree.

The grounded PoC kept the request_threaded_irq() -> __setup_irq() ->

irq_startup() -> sch_irq_unmask() -> sch_irq_mask_unmask() carrier and

used the original spin_lock_irqsave(&sch->lock) edge. Lockdep reported:

BUG: sleeping function called from invalid context

hardirqs last disabled at ... __setup_irq.constprop.0 ... [vuln_msv]

sch_rt_spin_lock_irqsave+0x1c/0x30 [vuln_msv]

sch_irq_mask_unmask.constprop.0+0x31/0x70 [vuln_msv]

__setup_irq.constprop.0+0xd/0x30 [vuln_msv]

Convert the SCH controller lock to raw_spinlock_t. The same lock is

also used by the GPIO direction and value callbacks, but those critical

sections only update MMIO-backed GPIO registers and do not contain

sleepable operations. Keeping this register lock non-sleeping is

therefore appropriate for the irqchip callbacks and does not change the

GPIO-side locking contract.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00123 · 1.9th percentile
Published
2026-07-25T14:17Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel≥ 5.13, < 5.15.2125.15.212
linux/linux_kernel≥ 5.16, < 6.1.1786.1.178
linux/linux_kernel≥ 6.2, < 6.6.1456.6.145
linux/linux_kernel≥ 6.7, < 6.12.976.12.97
linux/linux_kernel≥ 6.13, < 6.18.396.18.39
linux/linux_kernel≥ 6.19, < 7.1.47.1.4
References (7)
EPSS history
Timeline
  • 25 JUL 08:51Z
    gpio: sch: use raw_spinlock_t in the irq startup path
    cvelistv5