diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2022-09-06 17:11:17 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-09-07 10:36:10 -0600 |
commit | 336d28a8f38013a069f2d46e73aaa1880ef17a47 (patch) | |
tree | 69597f10bc7f1e1b9a02405f016eede1f4d489f1 | |
parent | df6d3422d3eed27afa23df092b3ce147c558d1a8 (diff) | |
download | linux-stable-336d28a8f38013a069f2d46e73aaa1880ef17a47.tar.gz linux-stable-336d28a8f38013a069f2d46e73aaa1880ef17a47.tar.bz2 linux-stable-336d28a8f38013a069f2d46e73aaa1880ef17a47.zip |
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: c7fb19428d67 ("io_uring: add support for ring mapped supplied buffers")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/a19bc9e211e3184215a58e129b62f440180e9212.1662480490.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | io_uring/io_uring.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index f9be9b7eb654..b9640ad5069f 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -1728,6 +1728,7 @@ static void io_queue_async(struct io_kiocb *req, int ret) switch (io_arm_poll_handler(req, 0)) { case IO_APOLL_READY: + io_kbuf_recycle(req, 0); io_req_task_queue(req); break; case IO_APOLL_ABORTED: |