CVE-2026-31740Linux内核中的Renesas MTU3计数器驱动存在一个竞态条件漏洞。该漏洞源于计数器驱动和PWM驱动共享硬件通道1和2,并竞争性地向共享结构体`rz_mtu3_channel`的`dev`成员写入各自的设备指针。根据驱动加载顺序,计数器驱动可能最终持有PWM驱动的设备指针。当计数器驱动尝试执行运行时电源管理(Runtime PM)操作时,它会错误地操作PWM设备,而不是预期的设备。这种错误的设备操作可能导致系统不稳定、服务中断或拒绝服务。
该漏洞位于Linux内核的`drivers/counter/rz-mtu3-cnt.c`文件中。Renesas MTU3硬件模块支持多种功能,包括计数器和PWM。这些功能由不同的内核子驱动管理,但它们共享底层的硬件通道结构体`struct rz_mtu3_channel`。问题在于该结构体中的`dev`成员被用于存储指向当前管理该通道的设备结构体指针,以便进行电源管理(PM)操作。在系统初始化阶段,如果PWM驱动和计数器驱动都尝试绑定到通道1或2,后加载的驱动会覆盖先加载驱动写入的`dev`指针。由于`dev`指针被计数器驱动用于`pm_runtime_get_sync`和`pm_runtime_put`等调用,如果该指针指向了错误的设备(例如PWM设备而非计数器设备),将导致对不相关硬件的电源状态进行错误修改。这种逻辑错误属于典型的竞态条件,依赖于驱动的探测顺序,可能导致系统崩溃或硬件功能异常,从而实现本地拒绝服务攻击。