Skip to content

Commit

Permalink
io_uring/waitid: 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 2eaa2fa commit 932de5e
Showing 1 changed file with 1 addition and 23 deletions.
24 changes: 1 addition & 23 deletions io_uring/waitid.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,29 +158,7 @@ static bool __io_waitid_cancel(struct io_kiocb *req)
int io_waitid_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->waitid_list, hash_node) {
if (req->cqe.user_data != cd->data &&
!(cd->flags & IORING_ASYNC_CANCEL_ANY))
continue;
if (__io_waitid_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->waitid_list, __io_waitid_cancel);
}

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

0 comments on commit 932de5e

Please sign in to comment.