]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
io_uring: store io_kiocb in wait->private
authorJens Axboe <axboe@kernel.dk>
Mon, 10 Feb 2020 16:07:05 +0000 (09:07 -0700)
committerJens Axboe <axboe@kernel.dk>
Mon, 2 Mar 2020 21:06:34 +0000 (14:06 -0700)
Store the io_kiocb in the private field instead of the poll entry, this
is in preparation for allowing multiple waitqueues.

No functional changes in this patch.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index f999503854b77c9900d6653e2f79d9d10bbcfbde..7a97a6c1c09e018138ac73b6fcb7bf6aa5f7942c 100644 (file)
@@ -3730,8 +3730,8 @@ static void io_poll_trigger_evfd(struct io_wq_work **workptr)
 static int io_poll_wake(struct wait_queue_entry *wait, unsigned mode, int sync,
                        void *key)
 {
-       struct io_poll_iocb *poll = wait->private;
-       struct io_kiocb *req = container_of(poll, struct io_kiocb, poll);
+       struct io_kiocb *req = wait->private;
+       struct io_poll_iocb *poll = &req->poll;
        struct io_ring_ctx *ctx = req->ctx;
        __poll_t mask = key_to_poll(key);
 
@@ -3854,7 +3854,7 @@ static int io_poll_add(struct io_kiocb *req, struct io_kiocb **nxt)
        /* initialized the list so that we can do list_empty checks */
        INIT_LIST_HEAD(&poll->wait.entry);
        init_waitqueue_func_entry(&poll->wait, io_poll_wake);
-       poll->wait.private = poll;
+       poll->wait.private = req;
 
        INIT_LIST_HEAD(&req->list);