CVE-2026-23342Linux内核在PREEMPT_RT模式下的BPF cpumap实现中存在竞态条件漏洞。由于`local_bh_disable()`在RT内核中无法完全禁用抢占,导致`bq_enqueue()`和`__cpu_map_flush()`可能并发操作同一CPU的`xdp_bulk_queue`。攻击者可利用此漏洞触发双重释放链表节点或队列损坏,导致内核崩溃。
漏洞核心在于PREEMPT_RT改变了`local_bh_disable()`的行为。在RT内核中,该函数仅通过`migrate_disable()`防止CPU迁移,但不禁止同一CPU上的任务抢占。当任务A执行`bq_flush_to_queue()`重置`bq->count`后被抢占,任务B可入队并再次触发刷新,导致对同一`flush_node`调用`__list_del_clearprev()`。任务A恢复执行时将访问已被置空的`prev`指针,引发内核Oops。此外,并发操作还会破坏`bq->count`计数器。