io_uring: use cancelation match helper for poll and timeout requests
authorJens Axboe <axboe@kernel.dk>
Fri, 23 Jun 2023 15:04:35 +0000 (09:04 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 17 Jul 2023 16:05:48 +0000 (10:05 -0600)
Get rid of the request vs io_cancel_data checking and just use the
exported helper for this.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/poll.c
io_uring/timeout.c

index c7bb292..dc1219f 100644 (file)
@@ -824,14 +824,10 @@ static struct io_kiocb *io_poll_file_find(struct io_ring_ctx *ctx,
 
                spin_lock(&hb->lock);
                hlist_for_each_entry(req, &hb->list, hash_node) {
-                       if (!(cd->flags & IORING_ASYNC_CANCEL_ANY) &&
-                           req->file != cd->file)
-                               continue;
-                       if (cd->seq == req->work.cancel_seq)
-                               continue;
-                       req->work.cancel_seq = cd->seq;
-                       *out_bucket = hb;
-                       return req;
+                       if (io_cancel_req_match(req, cd)) {
+                               *out_bucket = hb;
+                               return req;
+                       }
                }
                spin_unlock(&hb->lock);
        }
index 4200099..6242130 100644 (file)
@@ -268,16 +268,10 @@ static struct io_kiocb *io_timeout_extract(struct io_ring_ctx *ctx,
        list_for_each_entry(timeout, &ctx->timeout_list, list) {
                struct io_kiocb *tmp = cmd_to_io_kiocb(timeout);
 
-               if (!(cd->flags & IORING_ASYNC_CANCEL_ANY) &&
-                   cd->data != tmp->cqe.user_data)
-                       continue;
-               if (cd->flags & (IORING_ASYNC_CANCEL_ALL|IORING_ASYNC_CANCEL_ANY)) {
-                       if (cd->seq == tmp->work.cancel_seq)
-                               continue;
-                       tmp->work.cancel_seq = cd->seq;
+               if (io_cancel_req_match(tmp, cd)) {
+                       req = tmp;
+                       break;
                }
-               req = tmp;
-               break;
        }
        if (!req)
                return ERR_PTR(-ENOENT);