io_uring: don't fail iopoll requeue without ->mm
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 30 Jun 2020 12:20:40 +0000 (15:20 +0300)
committerJens Axboe <axboe@kernel.dk>
Tue, 30 Jun 2020 15:32:04 +0000 (09:32 -0600)
Actually, io_iopoll_queue() may have NULL ->mm, that's if SQ thread
didn't grabbed mm before doing iopoll. Don't fail reqs there, as after
recent changes it won't be punted directly but rather through task_work.

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

index 3c12221..43419f5 100644 (file)
@@ -1902,9 +1902,7 @@ static void io_iopoll_queue(struct list_head *again)
        do {
                req = list_first_entry(again, struct io_kiocb, list);
                list_del(&req->list);
-
-               /* should have ->mm unless io_uring is dying, kill reqs then */
-               if (unlikely(!current->mm) || !io_rw_reissue(req, -EAGAIN))
+               if (!io_rw_reissue(req, -EAGAIN))
                        io_complete_rw_common(&req->rw.kiocb, -EAGAIN, NULL);
        } while (!list_empty(again));
 }