gpio: eic-sprd: use raw_spinlock_t in the irq startup path
CVE-2026-64429 is fixed in 17 products on 1 platform, first by DEBIAN-CVE-2026-64429, released July 26, 2026. It is not reported as exploited. Patch Radar priority: Routine.
In the Linux kernel, the following vulnerability has been resolved: gpio: eic-sprd: use raw_spinlock_t in the irq startup path sprd_eic_irq_unmask() enables the GPIO IRQ and then updates controller state through sprd_eic_update(), which takes sprd_eic->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() -> sprd_eic_irq_unmask() -> sprd_eic_update() carrier and used the original spin_lock_irqsave(&sprd_eic->lock) edge. Lockdep BUG: sleeping function called from invalid context hardirqs last disabled at ... __setup_irq.constprop.0 ... [vuln_msv] sprd_rt_spin_lock_irqsave+0x1c/0x30 [vuln_msv] sprd_eic_update.constprop.0+0x48/0x90 [vuln_msv] sprd_eic_irq_unmask.constprop.0+0x35/0x50 [vuln_msv] __setup_irq.constprop.0+0xd/0x30 [vuln_msv] Convert the Spreadtrum EIC controller lock to raw_spinlock_t. The locked section only serializes MMIO register updates and does not contain sleepable operations, so keeping it non-sleeping is appropriate for the irqchip callbacks.
Where it's fixed
| Product | Fixed in | Fix | Released |
|---|---|---|---|
| Linux | |||
| dtb-aarch64 · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-64kb · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-64kb · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-64kb · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-azure · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-azure · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-azure · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-default · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-default · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-default · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-default-base · opensuse-leap 16.0 | 6.12.0-160000.38.1.160000.2.22 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-default-base · sles 15.7 | 6.4.0-150700.53.81.1.150700.17.45.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-default-base · sles 16.0 | 6.12.0-160000.38.1.160000.2.23 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-docs · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-docs · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-docs · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-kvmsmall · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-kvmsmall · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-livepatch-SLE15-SP7-RT_Update_20 · sles 15.7 | 1-150700.1.3.1 | SUSE-SU-2026:4120-1 | Sep 10, 2026 |
| kernel-livepatch-SLE15-SP7_Update_21 · sles 15.7 | 1-150700.15.3.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-obs-build · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-obs-build · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-obs-qa · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-obs-qa · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-rt · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-source · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-source · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-source · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-syms · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-syms · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-syms · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| kernel-zfcpdump · opensuse-leap 16.0 | 6.12.0-160000.38.1 | OPENSUSE-SU-2026:21910-1 | Sep 22, 2026 |
| kernel-zfcpdump · sles 15.7 | 6.4.0-150700.53.81.1 | SUSE-SU-2026:4254-1 | Oct 7, 2026 |
| kernel-zfcpdump · sles 16.0 | 6.12.0-160000.38.1 | SUSE-SU-2026:23902-1 | Sep 22, 2026 |
| linux · Debian 12.15 (bookworm) | 6.1.180-1 | DEBIAN-CVE-2026-64429 | Jul 26, 2026 |
| linux · Debian 13.5 (trixie) | 6.12.96-1 | DEBIAN-CVE-2026-64429 | Jul 26, 2026 |
| linux · Debian 14 | 7.1.4-1 | DEBIAN-CVE-2026-64429 | Jul 26, 2026 |
| linux-6.12 · Debian 12.15 (bookworm) | 6.12.100-1~deb12u1 | DEBIAN-CVE-2026-64429 | Jul 26, 2026 |
Patch Radar data is free to use with attribution. Terms and how to credit it.
Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.