lkml.org 
[lkml]   [2021]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 1/2] io_uring: Fix race condition when sqp thread goes to sleep
    If an asynchronous completion happens before the task is preparing
    itself to wait and set its state to TASK_INTERRUPTABLE, the completion
    will not wake up the sqp thread.

    Signed-off-by: Olivier Langlois <olivier@trillion01.com>
    ---
    fs/io_uring.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/fs/io_uring.c b/fs/io_uring.c
    index fc8637f591a6..02f789e07d4c 100644
    --- a/fs/io_uring.c
    +++ b/fs/io_uring.c
    @@ -6902,7 +6902,7 @@ static int io_sq_thread(void *data)
    }

    prepare_to_wait(&sqd->wait, &wait, TASK_INTERRUPTIBLE);
    - if (!io_sqd_events_pending(sqd)) {
    + if (!io_sqd_events_pending(sqd) && !current->task_works) {
    needs_sched = true;
    list_for_each_entry(ctx, &sqd->ctx_list, sqd_list) {
    io_ring_set_wakeup_flag(ctx);
    --
    2.32.0
    \
     
     \ /
      Last update: 2021-06-22 20:46    [W:3.245 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site