CVE-2026-99243 in Linux信息

摘要

由 VulDB • 2026-11-03

在 Linux 内核中,已修复以下漏洞:

io-wq: 对退出位与工作者创建任务工作(task work)进行排序

`io_wq_exit_workers()` 使用 `task_work_cancel_match()` 取消排队的工作者创建的 task work。该操作包含对 `task->task_works` 的普通加载(plain load)。

`io_queue_worker_create()` 添加新条目,并测试 `IO_WQ_BIT_EXIT` 以在队列正在退出时将其取消。

这必须进行排序。`task_work_add()` 通过 `cmpxchg()` 提供完整的内存屏障(full barrier)。但是,`io_wq_exit_start()` 使用 `set_bit()` 设置该位,而 `set_bit()` 没有任何内存顺序保证。

因此,据我所知,在弱序架构上,退出的任务可能在位的存储可见之前加载了 `task_works`。另一方也在位的存储可见之前测试该位。因此,条目保留在队列中并带有 `worker_refs`,且退出任务无限期地等待 `worker_done`。

如果任务仍有环(rings),则 `io_uring_del_tctx_node()` 通过 `io_wq_set_exit_on_idle()` 中的 `test_and_set_bit()` 提供屏障。然而,当它关闭所有环时,该屏障就消失了。

在 `set_bit()` 之后添加屏障。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!