Commit 336d28a8 authored by Pavel Begunkov's avatar Pavel Begunkov Committed by Jens Axboe

io_uring: recycle kbuf recycle on tw requeue

When we queue a request via tw for execution it's not going to be
executed immediately, so when io_queue_async() hits IO_APOLL_READY
and queues a tw but doesn't try to recycle/consume the buffer some other
request may try to use the the buffer.

Fixes: c7fb1942 ("io_uring: add support for ring mapped supplied buffers")
Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/a19bc9e211e3184215a58e129b62f440180e9212.1662480490.git.asml.silence@gmail.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent df6d3422
...@@ -1728,6 +1728,7 @@ static void io_queue_async(struct io_kiocb *req, int ret) ...@@ -1728,6 +1728,7 @@ static void io_queue_async(struct io_kiocb *req, int ret)
switch (io_arm_poll_handler(req, 0)) { switch (io_arm_poll_handler(req, 0)) {
case IO_APOLL_READY: case IO_APOLL_READY:
io_kbuf_recycle(req, 0);
io_req_task_queue(req); io_req_task_queue(req);
break; break;
case IO_APOLL_ABORTED: case IO_APOLL_ABORTED:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment