CVE-2026-64428 Details
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.
A vulnerability exists in the Linux kernel's GPIO SCH controller handling, specifically in the IRQ startup process. The issue arises because the IRQ unmasking function enables the GPIO IRQ and subsequently updates the controller state using a locking mechanism that, under certain conditions, can lead to improper handling of IRQs. This vulnerability is present in the stable version of the Linux kernel.
The vulnerability has been addressed by changing the SCH controller's lock from a regular spinlock to a raw spinlock, which prevents sleeping functions from being called inappropriately. Users should update to the latest version of the Linux kernel where this change has been implemented.
Metrics
CVSS 4.0 Severity and Vector Strings:
No CVSS 4.0 data is available for this CVE.
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
No SSVC data is available for this CVE.
References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://git.kernel.org/stable/c/286533cb14a3c8a8bd39ff64ea2fc8e1aa0f638b | kernel.org | Patch |
| https://git.kernel.org/stable/c/3b1aa05ec27eeccc889ecaa3f2d9baa9f453e50d | kernel.org | Patch |
| https://git.kernel.org/stable/c/41cad91a09d69e8fff4e936db29b1054b4e9f9f7 | kernel.org | Patch |
| https://git.kernel.org/stable/c/4508366ab7dd0c2917a51a9c2e23cc1b9d35157a | kernel.org | Patch |
| https://git.kernel.org/stable/c/4f03a15cc73c83740fc355ee22b336492d17b4da | kernel.org | Patch |
| https://git.kernel.org/stable/c/7a550256d68bbdfa0903ab1c4595c04a6815493a | kernel.org | Patch |
| https://git.kernel.org/stable/c/a235cec779bb39ec8f961a935b28a2ce278c6c64 | kernel.org | Patch |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| NVD-CWE-noinfo | Insufficient Information to Classify Weakness | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| linux linux kernel | >= 5.13, < 5.15.212 >= 5.16, < 6.1.178 >= 6.2, < 6.6.145 >= 6.7, < 6.12.97 >= 6.13, < 6.18.39 >= 6.19, < 7.1.4 |
CPE
Remediation
| |
Change History
3 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Sep 4, 2026 | Initial Analysis | [email protected] |
| Aug 17, 2026 | CVE Modified | kernel.org |
| Jul 25, 2026 | New CVE Received | kernel.org |