CVE-2026-31687Linux内核中的gpio: omap驱动存在安全漏洞。该驱动在probe()回调函数中注册另一个驱动(omap_mpuio_driver),这违反了驱动核心的设计原则,且在持有设备锁的情况下注册驱动会导致潜在的死锁风险。此外,该驱动在模块卸载时未被注销。攻击者可利用该漏洞导致系统死锁,从而造成拒绝服务。
该漏洞源于Linux内核OMAP GPIO驱动程序的初始化逻辑错误。在`omap_gpio_probe()`函数中调用了`omap_mpuio_init()`,该函数尝试注册`omap_mpuio_driver`。然而,在探测(probe)阶段,设备锁已被持有。内核提交`dc23806a7c47`引入了在`driver_match_device()`中强制执行设备锁的机制,这导致在持有锁的情况下尝试注册驱动时发生死锁(Deadlock)。这是一种典型的并发控制逻辑缺陷。由于`omap_mpuio_driver`从未被正确注销,即使模块被卸载,也可能导致内核资源泄漏或悬空指针。本地低权限用户可通过加载或触发相关模块操作来触发该死锁条件,导致系统挂起或崩溃,从而破坏系统的可用性。