CVE-2026-43358CVE-2026-43358 是 Linux 内核 btrfs 文件系统驱动中的一个安全漏洞。该漏洞源于 try_release_subpage_extent_buffer() 函数在错误处理路径中缺失了 rcu_read_lock() 调用。由于代码逻辑在循环后调用了 rcu_read_unlock(),而在特定错误退出路径前未进行加锁操作,导致了锁的不匹配。这种 RCU 锁的使用错误可能破坏内核的同步机制,进而引发系统稳定性问题。该问题由 Clang 线程安全分析器检测到。攻击者可利用此漏洞导致内核崩溃或拒绝服务。
该漏洞发生在 Linux 内核的 btrfs 文件系统驱动中,具体涉及子页扩展缓冲区的释放逻辑。在函数 try_release_subpage_extent_buffer() 中,代码使用 RCU(Read-Copy-Update)机制来保护临界区。正常的执行流程要求在访问共享数据前调用 rcu_read_lock(),并在访问结束后调用 rcu_read_unlock()。然而,在特定的错误处理路径中,代码逻辑存在缺陷。当满足特定错误条件退出循环时,代码直接跳过了本应执行的 rcu_read_lock() 调用,直接流向后续包含 rcu_read_unlock() 的代码段。这种锁的不平衡会导致 RCU 机制的状态异常。从攻击角度来看,这是一个本地漏洞,需要低权限即可触发。攻击者可以通过调用特定的 btrfs 文件系统操作(如触发页面回收)来进入该错误路径。由于 RCU 锁机制的破坏,内核可能会进入不一致状态,导致死锁或内核恐慌,最终造成系统崩溃。