io_uring: always lock in io_apoll_task_func
[platform/kernel/linux-starfive.git] / io_uring / poll.c
index 869e1d2..a4084ac 100644 (file)
@@ -360,11 +360,12 @@ static void io_apoll_task_func(struct io_kiocb *req, bool *locked)
        if (ret == IOU_POLL_NO_ACTION)
                return;
 
+       io_tw_lock(req->ctx, locked);
        io_poll_remove_entries(req);
        io_poll_tw_hash_eject(req, locked);
 
        if (ret == IOU_POLL_REMOVE_POLL_USE_RES)
-               io_req_complete_post(req);
+               io_req_task_complete(req, locked);
        else if (ret == IOU_POLL_DONE || ret == IOU_POLL_REISSUE)
                io_req_task_submit(req, locked);
        else