Skip to content

Commit

Permalink
io_uring/futex: use generic io_cancel_remove() helper
Browse files Browse the repository at this point in the history
Don't implement our own loop rolling and checking, just use the generic
helper to find and cancel requests.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Jens Axboe committed Feb 17, 2025
1 parent 8fa374f commit 2eaa2fa
Showing 1 changed file with 1 addition and 23 deletions.
24 changes: 1 addition & 23 deletions io_uring/futex.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,29 +116,7 @@ static bool __io_futex_cancel(struct io_kiocb *req)
int io_futex_cancel(struct io_ring_ctx *ctx, struct io_cancel_data *cd,
unsigned int issue_flags)
{
struct hlist_node *tmp;
struct io_kiocb *req;
int nr = 0;

if (cd->flags & (IORING_ASYNC_CANCEL_FD|IORING_ASYNC_CANCEL_FD_FIXED))
return -ENOENT;

io_ring_submit_lock(ctx, issue_flags);
hlist_for_each_entry_safe(req, tmp, &ctx->futex_list, hash_node) {
if (req->cqe.user_data != cd->data &&
!(cd->flags & IORING_ASYNC_CANCEL_ANY))
continue;
if (__io_futex_cancel(req))
nr++;
if (!(cd->flags & IORING_ASYNC_CANCEL_ALL))
break;
}
io_ring_submit_unlock(ctx, issue_flags);

if (nr)
return nr;

return -ENOENT;
return io_cancel_remove(ctx, cd, issue_flags, &ctx->futex_list, __io_futex_cancel);
}

bool io_futex_remove_all(struct io_ring_ctx *ctx, struct io_uring_task *tctx,
Expand Down

0 comments on commit 2eaa2fa

Please sign in to comment.