CVE-2026-31689Linux内核EDAC子系统存在漏洞。在`edac_mc_alloc`函数中,若`pvt_info`分配失败,错误处理路径会调用`put_device`。然而,由于初始化顺序错误,设备初始化发生在分配失败检查之后,导致释放函数指针未设置。这会导致调用未初始化的kobject,触发内核警告及系统崩溃,造成本地拒绝服务。
该漏洞位于Linux内核`drivers/edac/edac_mc.c`的`edac_mc_alloc`函数中。问题源于初始化顺序的逻辑错误:函数首先尝试分配`mci->pvt_info`,若失败则执行错误处理。错误处理代码包含`put_device(&mci->dev)`以释放资源。然而,关键的`device_initialize(&mci->dev)`调用被安排在`pvt_info`分配检查之后。这意味着当分配失败发生时,设备结构体尚未完成初始化,其关联的`kobject`处于未定义状态,且release回调函数指针为空。此时强制调用`put_device`等同于对未初始化的内核对象执行释放操作,导致内核抛出“kobject is not initialized”警告,并可能引发空指针解引用或系统崩溃,造成拒绝服务。攻击者需具备本地低权限,通过消耗内存或触发EDAC驱动加载即可利用。