summaryrefslogtreecommitdiff
path: root/io_uring
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2026-01-05 07:42:48 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-01-17 16:35:14 +0100
commit2b9c15286a178190e5bc7ee0a1b200c38953fdf4 (patch)
tree80e2cbc155568f8cd3fc7886fe408ca6a5ba68c2 /io_uring
parent3aa67687d5582e4fac911a041d375708766ff15a (diff)
io_uring/io-wq: fix incorrect io_wq_for_each_worker() termination logic
commit e0392a10c9e80a3991855a81317da3039fcbe32c upstream. A previous commit added this helper, and had it terminate if false is returned from the handler. However, that is completely opposite, it should abort the loop if true is returned. Fix this up by having io_wq_for_each_worker() keep iterating as long as false is returned, and only abort if true is returned. Cc: stable@vger.kernel.org Fixes: 751eedc4b4b7 ("io_uring/io-wq: move worker lists to struct io_wq_acct") Reported-by: Lewis Campbell <info@lewiscampbell.tech> Reviewed-by: Gabriel Krisman Bertazi <krisman@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'io_uring')
-rw-r--r--io_uring/io-wq.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c
index 1d03b2fc4b25..55961da19f3b 100644
--- a/io_uring/io-wq.c
+++ b/io_uring/io-wq.c
@@ -951,11 +951,11 @@ static bool io_wq_for_each_worker(struct io_wq *wq,
void *data)
{
for (int i = 0; i < IO_WQ_ACCT_NR; i++) {
- if (!io_acct_for_each_worker(&wq->acct[i], func, data))
- return false;
+ if (io_acct_for_each_worker(&wq->acct[i], func, data))
+ return true;
}
- return true;
+ return false;
}
static bool io_wq_worker_wake(struct io_worker *worker, void *data)