]> www.infradead.org Git - users/willy/xarray.git/commitdiff
io_uring/rsrc: remove redundant __set_current_state() post schedule()
authorJens Axboe <axboe@kernel.dk>
Sat, 15 Jun 2024 00:34:50 +0000 (18:34 -0600)
committerJens Axboe <axboe@kernel.dk>
Sun, 16 Jun 2024 20:54:55 +0000 (14:54 -0600)
We're guaranteed to be in a TASK_RUNNING state post schedule, so we
never need to set the state after that. While in there, remove the
other __set_current_state() as well, and just call finish_wait()
when we now we're going to break anyway. This is easier to grok than
manual __set_current_state() calls.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/rsrc.c

index e89c5e2326a25711313216539dfaa0da13477176..60c00144471a6167d59199304f6f460b084ff65a 100644 (file)
@@ -224,7 +224,7 @@ __cold static int io_rsrc_ref_quiesce(struct io_rsrc_data *data,
 
                ret = io_run_task_work_sig(ctx);
                if (ret < 0) {
-                       __set_current_state(TASK_RUNNING);
+                       finish_wait(&ctx->rsrc_quiesce_wq, &we);
                        mutex_lock(&ctx->uring_lock);
                        if (list_empty(&ctx->rsrc_ref_list))
                                ret = 0;
@@ -232,7 +232,6 @@ __cold static int io_rsrc_ref_quiesce(struct io_rsrc_data *data,
                }
 
                schedule();
-               __set_current_state(TASK_RUNNING);
                mutex_lock(&ctx->uring_lock);
                ret = 0;
        } while (!list_empty(&ctx->rsrc_ref_list));