Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2026-64429

gpio: eic-sprd: use raw_spinlock_t in the irq startup path

Description

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.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < 96612bf2712cd961dbd9b52f3a9b4ab668f57628affected
  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < 581ac2ad001ff1128931191f249a7f2074672b7aaffected
  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < e244cd8b51001ba480f274c44dba9002813a4739affected
  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < 19d63fd528719ce7d06d9aeb88d25b7d6478198aaffected
  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < 6112fba4150039ccd90e29f2d1b788c73ad7b3ddaffected
  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < 4750909a40da9016185e0ac991510a278cecb1e7affected
  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < 5c3c9ec1172a4c3384b8b800b3a8896cc2c1b20eaffected
  • 25518e024e3a6e5715d672f1daa91e1d100f7436 to < 90f0109019e6817eb40a486671b7722d1544ae29affected

Linux Linux

Default version status: affected

  • 4.17affected
  • 0 to < 4.17unaffected
  • 5.10.261 to ≤ 5.10.*unaffected
  • 5.15.212 to ≤ 5.15.*unaffected
  • 6.1.178 to ≤ 6.1.*unaffected
  • 6.6.145 to ≤ 6.6.*unaffected
  • 6.12.96 to ≤ 6.12.*unaffected
  • 6.18.39 to ≤ 6.18.*unaffected
  • 7.1.4 to ≤ 7.1.*unaffected
  • 7.2 to ≤ *unaffected

References