CVE-2024-46839 in Linux
摘要
由 VulDB • 2026-05-31
在 Linux 内核中,已修复以下漏洞:
workqueue:改进 workqueue 看门狗触发的可扩展性
在拥有约 2000 个 CPU 的 powerpc 系统上,当 stop_machine 运行时(在本例中是由于 CPU 热插拔),在 workqueue 代码中观察到硬锁死(hard lockups)现象。这是由于大量 CPU 在 multi_cpu_stop 中自旋,调用 touch_nmi_watchdog(),最终调用 wq_watchdog_touch()。wq_watchdog_touch() 写入全局变量 wq_watchdog_touched,该变量可能与其它重要的 workqueue 数据位于同一缓存行(cacheline)中,从而导致操作速度降低直至发生锁死。
在以下简化的跟踪信息中,worker_pool_idr 位于热点缓存行中,导致锁死始终出现在 idr_find 处。
watchdog: CPU 1125 自检测到硬锁死 @ idr_find 调用跟踪: get_work_pool __queue_work call_timer_fn run_timer_softirq __do_softirq do_softirq_own_stack irq_exit timer_interrupt decrementer_common_virt * 中断: 900 (定时器) 在 multi_cpu_stop 处 multi_cpu_stop cpu_stopper_thread smpboot_thread_fn kthread
修复方法:让 wq_watchdog_touch() 仅在上次记录触发的时间超过看门狗阈值 1/4 时才写入该行。
Be aware that VulDB is the high quality source for vulnerability data.