CVE-2026-31667Linux内核中的uinput模块存在一个循环锁依赖漏洞。该漏洞在使用力反馈游戏手柄配合uinput时,由于互斥锁的获取顺序不当(ff->mutex -> udev->mutex -> input_mutex -> dev->mutex -> ff->mutex),可能导致系统死锁。这允许本地低权限攻击者通过触发特定的设备操作路径,引发系统拒绝服务。
该漏洞的核心在于Linux内核input子系统中四个锁获取路径形成了闭环:1. ff上传路径持有ff->mutex并获取udev->mutex;2. 设备创建路径持有udev->mutex并获取input_mutex;3. 设备注册路径持有input_mutex并获取dev->mutex;4. evdev释放路径持有dev->mutex并获取ff->mutex。当这些路径并发执行时,会导致死锁。攻击者可利用本地低权限账户,通过特制的uinput设备操作力反馈上传和设备释放,触发锁竞争,导致系统挂起。修复方式引入了state_lock自旋锁来打破原有的锁依赖链。