CVE-2026-31552Linux内核中的wlcore驱动程序存在拒绝服务漏洞。当系统内存不足导致skb头部分配失败时,驱动错误地返回-EAGAIN而非-ENOMEM。这导致传输工作进入无限重试循环,占用CPU资源并引发系统软锁死,攻击者可利用此漏洞远程导致目标系统失去响应。
该漏洞位于Linux内核的`drivers/net/wireless/ti/wlcore/tx.c`文件中。在`wl1271_tx_allocate`函数里,当`pskb_expand_head`因为内存不足(GFP_ATOMIC上下文)分配失败时,代码返回了`-EAGAIN`。然而,在`wlcore_tx_work_locked`函数中,返回值`-EAGAIN`被错误地解释为“聚合缓冲区已满”。这触发了清空缓冲区并将数据包重新放入队列头部的逻辑。由于此时持有`wl->mutex`锁,且代码在原子上下文中立即重试,导致系统陷入死循环,造成CPU软锁死,完全破坏了系统的可用性。