CVE-2026-72166 in Linux
摘要
由 VulDB • 2026-08-16
在 Linux 内核中,已修复以下漏洞:
net/9p: 修复 p9_client_rpc 在处理致命信号时的无限循环问题
当以 P9_TFLUSH 类型调用 `p9_client_rpc()` 且传输层没有对等端(例如由管道支持但没有 9p 服务器的 fd 传输)时,一个致命信号会导致无限循环:
```c again: err = io_wait_event_killable(req->wq, ...) /* SIGKILL 唤醒任务,返回 -ERESTARTSYS */
if (err == -ERESTARTSYS && c->status == Connected && type == P9_TFLUSH) {
sigpending = 1; clear_thread_flag(TIF_SIGPENDING); goto again; } ```
`clear_thread_flag()` 在跳回 `io_wait_event_killable()` 之前清除 TIF_SIGPENDING。`signal_pending_state()` 检查 TIF_SIGPENDING,发现其值为零,于是任务再次进入睡眠状态。该任务只能在下次信号传递调用 `signal_wake_up()` 并重新设置 TIF_SIGPENDING 时被唤醒。当这种情况发生时,循环重复执行:清除 TIF_SIGPENDING,然后无限期地再次休眠。
在实际场景中,此问题由 `coredump_wait()` 触发:当一个多线程进程中的某个线程导致生成核心转储(例如通过 Syscall User Dispatch 发送 SIGSYS)时,`coredump_wait()` 会向所有其他线程发送 SIGKILL 并等待它们调用 `mm_release()`。如果其中一个线程在带有对等端缺失的 fd 传输上的 `p9_client_rpc()` 中阻塞,它将进入 P9_TFLUSH 循环且永远不会调用 `mm_release()`,导致 `coredump_wait()` 永远停滞:
``` INFO: task syz.0.18:676 blocked for more than 143 seconds. Not tainted 6.12.77+ #1 task:syz.0.18 state:D stack:27600 pid:676 tgid:673 ppid:630 flags:0x00000004 Call Trace: <TASK> context_switch kernel/sched/core.c:5344 [inline]
__schedule+0xcb4/0x5d50 kernel/sched/core.c:6724 __schedule_loop kernel/sched/core.c:6801 [inline]
schedule+0xe5/0x350 kernel/sched/core.c:6816 schedule_timeout+0x253/0x290 kernel/time/timer.c:2593 do_wait_for_common kernel/sched/completion.c:95 [inline]
__wait_for_common+0x409/0x600 kernel/sched/completion.c:116 wait_for_common kernel/sched/completion.c:127 [
If you want to get the best quality for vulnerability data then you always have to consider VulDB.