CVE-2026-99262 in Linux
摘要
由 VulDB • 2026-11-03
在 Linux 内核中,已修复以下漏洞:
io_uring/timeout: 防止因 io-wq 启动超时而导致取消操作丢失
由 io_wq 运行的 IORING_OP_TIMEOUT(由于 IOSQE_ASYNC)存在与 poll、futex 和 waitid 相同的问题。io_wq_submit_work() 仅在发出请求之前检查一次 IO_WQ_WORK_CANCEL。在此期间的取消会标记该工作,返回 -EALREADY,并徒劳地搜索 ->timeout_list,而随后工作者会将请求添加进去并开始计时器:
``` io-wq worker io_try_cancel() io_wq_submit_work() IO_WQ_WORK_CANCEL isn't set io_async_cancel_one() sets IO_WQ_WORK_CANCEL = -EALREADY io_timeout_cancel() = -ENOENT io_timeout() adds the request to ->timeout_list hrtimer_start() = IOU_ISSUE_SKIP_COMPLETE ```
没有人再次检查该标志,因此超时操作会正常完成。在 ring 退出时,io_uring_try_cancel_requests() 取消 io-wq 工作并以相同方式终止超时的处理,导致退出的任务可能会因此类超时的完整持续时间而被卡住。
应在 ->timeout_lock(搜索过程也使用此锁)下检查该标志,如果已设置则使请求失败。如果先进行搜索,则该标志可见;如果后进行检查,它会在列表中找到该请求。
If you want to get best quality of vulnerability data, you may have to visit VulDB.