Description
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.
Published: 2026-07-25
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The SCH GPIO driver in the Linux kernel incorrectly acquires a sleeping‑capable spinlock during the interrupt startup sequence. When the kernel is built with PREEMPT_RT, this lock is treated as a sleeping lock, but the context in which it is used is non‑sleepable. This mismatch triggers a lockdep violation and can lead to a deadlock, kernel panic, or system freeze, thereby disrupting availability.

Affected Systems

Any system running a Linux kernel that compiles the SCH GPIO driver remains vulnerable. This includes all Unix‑like systems whose kernels use the legacy spinlock for sch_irq_unmask() and sch_irq_mask_unmask(), especially those distributed with PREEMPT_RT support. No specific kernel versions are listed in the advisory, so the vulnerability persists until the lock is converted to raw_spinlock_t.

Risk and Exploitability

The CVSS score of 5.5 indicates a moderate level of risk, while the EPSS score is less than 1 % and the vulnerability is not listed in the CISA KEV catalog, indicating a low probability of exploitation. The flaw manifests only when an interrupt is initialized under a PREEMPT_RT build and the sleeping lock is invoked from a non‑sleepable context. Based on the description, it is inferred that an attacker would need privileged access—such as root or the ability to trigger an interrupt during kernel initialization—to create the unsafe state. The impact is limited to system availability and does not expose confidential data or allow remote code execution.

Generated by OpenCVE AI on August 3, 2026 at 18:43 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the kernel to a revision that converts the SCH controller lock to a raw_spinlock_t and rebuild the kernel.
  • Reboot the host so that the updated kernel image is active and the new lock semantics take effect.
  • Monitor system logs for lockdep warnings or kernel panics related to SCH GPIO interrupts.

Generated by OpenCVE AI on August 3, 2026 at 18:43 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4720-1 linux security update
Debian DLA Debian DLA DLA-4723-1 linux-6.1 security update
Debian DLA Debian DLA DLA-4724-1 linux-6.12 new package
Debian DSA Debian DSA DSA-6405-1 linux security update
History

Sun, 02 Aug 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-691

Thu, 30 Jul 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-663
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Low


Mon, 27 Jul 2026 05:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-691

Sat, 25 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description 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.
Title gpio: sch: use raw_spinlock_t in the irq startup path
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-25T08:51:05.460Z

Reserved: 2026-07-19T15:36:31.787Z

Link: CVE-2026-64428

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-07-25T10:17:26.947

Modified: 2026-08-11T15:01:50.637

Link: CVE-2026-64428

cve-icon Redhat

Severity : Low

Publid Date: 2026-07-25T00:00:00Z

Links: CVE-2026-64428 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T18:45:17Z

Weaknesses
  • CWE-663

    Use of a Non-reentrant Function in a Concurrent Context