mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
io_uring/futex: ensure partial wakes are appropriately dequeued
If a FUTEX_WAITV vectored operation is only partially woken, we
should call __futex_wake_mark() on the queue to account for that.
If not, then a later wakeup will wake the same entry, rather than
the next one in line.
Fixes: 8f350194d5 ("io_uring: add support for vectored futex waits")
Reviewed-by: Gabriel Krisman Bertazi <krisman@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
7996883455
commit
7faaa6812a
|
|
@ -159,8 +159,10 @@ static void io_futex_wakev_fn(struct wake_q_head *wake_q, struct futex_q *q)
|
||||||
struct io_kiocb *req = q->wake_data;
|
struct io_kiocb *req = q->wake_data;
|
||||||
struct io_futexv_data *ifd = req->async_data;
|
struct io_futexv_data *ifd = req->async_data;
|
||||||
|
|
||||||
if (!io_futexv_claim(ifd))
|
if (!io_futexv_claim(ifd)) {
|
||||||
|
__futex_wake_mark(q);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
if (unlikely(!__futex_wake_mark(q)))
|
if (unlikely(!__futex_wake_mark(q)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user