io_uring: fix CQ waiting timeout handling io_uring-2023-01-06
authorPavel Begunkov <asml.silence@gmail.com>
Thu, 5 Jan 2023 10:49:15 +0000 (10:49 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 5 Jan 2023 15:04:47 +0000 (08:04 -0700)
commit12521a5d5cb7ff0ad43eadfc9c135d86e1131fa8
treed9017ab2dc68c6ec6503969565c8acda18ac3dd0
parent59b745bb4e0bd445366c45b8df6b51b69134f4f5
io_uring: fix CQ waiting timeout handling

Jiffy to ktime CQ waiting conversion broke how we treat timeouts, in
particular we rearm it anew every time we get into
io_cqring_wait_schedule() without adjusting the timeout. Waiting for 2
CQEs and getting a task_work in the middle may double the timeout value,
or even worse in some cases task may wait indefinitely.

Cc: stable@vger.kernel.org
Fixes: 228339662b398 ("io_uring: don't convert to jiffies for waiting on timeouts")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/f7bffddd71b08f28a877d44d37ac953ddb01590d.1672915663.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/io_uring.c