]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
io_uring/io-wq: handle !sysctl_hung_task_timeout_secs
authorJens Axboe <axboe@kernel.dk>
Fri, 23 Jan 2026 20:58:03 +0000 (13:58 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 23 Jan 2026 20:58:03 +0000 (13:58 -0700)
If the hung_task_timeout sysctl is set to 0, then we'll end up busy
looping inside io_wq_exit_workers() after an earlier commit switched to
using wait_for_completion_timeout(). Use the maximum schedule timeout
value for that case.

Fixes: 1f293098a313 ("io_uring/io-wq: don't trigger hung task for syzbot craziness")
Reported-by: Chris Mason <clm@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/io-wq.c

index aaf1dfc2176367ee2880828657f097b949df9405..3b55feb620d9eef8dda27cceef2b3acefa27d339 100644 (file)
@@ -1340,6 +1340,8 @@ static void io_wq_exit_workers(struct io_wq *wq)
         * up waiting more than IO_URING_EXIT_WAIT_MAX.
         */
        timeout = sysctl_hung_task_timeout_secs * HZ / 2;
+       if (!timeout)
+               timeout = MAX_SCHEDULE_TIMEOUT;
        warn_timeout = jiffies + IO_URING_EXIT_WAIT_MAX;
        do {
                if (wait_for_completion_timeout(&wq->worker_done, timeout))