io_uring: end waiting before task cancel attempts
authorPavel Begunkov <asml.silence@gmail.com>
Sun, 20 Dec 2020 13:21:44 +0000 (13:21 +0000)
committerJens Axboe <axboe@kernel.dk>
Sun, 20 Dec 2020 18:05:39 +0000 (11:05 -0700)
Get rid of TASK_UNINTERRUPTIBLE and waiting with finish_wait before
going for next iteration in __io_uring_task_cancel(), because
__io_uring_files_cancel() doesn't expect that sheduling is disallowed.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index d0ab6b5..fbf7478 100644 (file)
@@ -8989,9 +8989,9 @@ void __io_uring_task_cancel(void)
                if (inflight != tctx_inflight(tctx))
                        continue;
                schedule();
                if (inflight != tctx_inflight(tctx))
                        continue;
                schedule();
+               finish_wait(&tctx->wait, &wait);
        } while (1);
 
        } while (1);
 
-       finish_wait(&tctx->wait, &wait);
        atomic_dec(&tctx->in_idle);
 }
 
        atomic_dec(&tctx->in_idle);
 }