CVE-2026-43196Linux内核中的TI PRUSS驱动存在双重释放漏洞。在`pruss_clk_mux_setup()`函数执行错误处理路径时,`devm_add_action_or_reset()`会触发`pruss_of_free_clk_provider()`释放设备节点引用。然而,函数随后再次调用`of_node_put(clk_mux_np)`,导致对同一内存对象进行重复释放。此漏洞可能导致内核崩溃或内存损坏,本地低权限攻击者可利用此问题提升权限或造成拒绝服务。
该漏洞位于Linux内核的TI PRUSS子系统驱动中。具体问题出现在`pruss_clk_mux_setup()`函数内,该函数负责设置PRUSS时钟复用器。代码逻辑使用了`devm_add_action_or_reset()`接口注册清理动作,该动作会在设备卸载或出错时调用`pruss_of_free_clk_provider()`,进而执行`of_node_put()`减少设备树节点的引用计数。漏洞在于,注册完该动作后,代码并未返回,而是继续执行并再次显式调用了`of_node_put(clk_mux_np)`。这种重复的释放操作导致`clk_mux_np`指向的内存被提前回收,形成UAF(释放后重用)条件。攻击者可通过特定的硬件操作或系统调用触发该路径,利用内核堆喷射技术控制执行流,从而实现本地权限提升。