diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2020-10-19 18:39:16 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-10-19 22:29:51 +0300 |
commit | 900fad45dc75c8af6015bc514cc11aa3d265426a (patch) | |
tree | 97991353a10ad1d323746b75bdc91df9fbabf161 /LICENSES | |
parent | 4d52f338992bfc9f494e5a7eb55f4249ab11cd66 (diff) | |
download | linux-900fad45dc75c8af6015bc514cc11aa3d265426a.tar.xz |
io_uring: fix racy REQ_F_LINK_TIMEOUT clearing
io_link_timeout_fn() removes REQ_F_LINK_TIMEOUT from the link head's
flags, it's not atomic and may race with what the head is doing.
If io_link_timeout_fn() doesn't clear the flag, as forced by this patch,
then it may happen that for "req -> link_timeout1 -> link_timeout2",
__io_kill_linked_timeout() would find link_timeout2 and try to cancel
it, so miscounting references. Teach it to ignore such double timeouts
by marking the active one with a new flag in io_prep_linked_timeout().
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'LICENSES')
0 files changed, 0 insertions, 0 deletions