CVE-2026-43216Linux内核网络子系统中存在一处死锁漏洞。`skb_may_tx_timestamp()`函数在处理时间戳时会获取`sock::sk_callback_lock`,若此时处于IRQ上下文且该锁已被同一CPU占用,将导致死锁。该漏洞允许本地低权限用户触发系统不可用,修复方案通过RCU机制移除了锁依赖。
漏洞发生在Linux内核的`skb_may_tx_timestamp()`函数中。该函数为了检查Socket状态,试图获取`sock::sk_callback_lock`自旋锁。然而,部分网卡驱动程序通过硬中断来处理发送时间戳的完成通知。如果在硬中断上下文中调用该函数,且该锁在同一个CPU上已经被写锁定(例如在软中断或进程上下文中),就会发生死锁,导致系统挂起或崩溃。由于`sk_socket`和`file`成员在Socket关闭时会被设置为NULL,且是通过RCU延迟释放的,因此完全可以利用RCU机制来安全地读取这些指针,而无需持有自旋锁。修复补丁通过`READ_ONCE()`宏读取指针,配合`WRITE_ONCE()`进行写入,消除了在IRQ上下文获取锁的必要,从而解决了死锁问题。