projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
66e70be
)
io_uring: fail links of cancelled timeouts
author
Pavel Begunkov
<asml.silence@gmail.com>
Thu, 9 Sep 2021 12:56:27 +0000
(13:56 +0100)
committer
Jens Axboe
<axboe@kernel.dk>
Thu, 9 Sep 2021 15:41:02 +0000
(09:41 -0600)
When we cancel a timeout we should mark it with REQ_F_FAIL, so
linked requests are cancelled as well, but not queued for further
execution.
Cc: stable@vger.kernel.org
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link:
https://lore.kernel.org/r/fff625b44eeced3a5cae79f60e6acf3fbdf8f990.1631192135.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c
patch
|
blob
|
history
diff --git
a/fs/io_uring.c
b/fs/io_uring.c
index b21a423a4de8aedf150b2d719f511a8b9ab0a375..ffd91844b2e5d65a34357c0ab829a233b9a93283 100644
(file)
--- a/
fs/io_uring.c
+++ b/
fs/io_uring.c
@@
-1482,6
+1482,8
@@
static void io_kill_timeout(struct io_kiocb *req, int status)
struct io_timeout_data *io = req->async_data;
if (hrtimer_try_to_cancel(&io->timer) != -1) {
+ if (status)
+ req_set_fail(req);
atomic_set(&req->ctx->cq_timeouts,
atomic_read(&req->ctx->cq_timeouts) + 1);
list_del_init(&req->timeout.list);