]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
io_uring/timeout: Switch to use hrtimer_setup()
authorNam Cao <namcao@linutronix.de>
Wed, 5 Feb 2025 10:39:00 +0000 (11:39 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 18 Feb 2025 09:32:32 +0000 (10:32 +0100)
hrtimer_setup() takes the callback function pointer as argument and
initializes the timer completely.

Replace hrtimer_init() and the open coded initialization of
hrtimer::function with the new setup mechanism.

Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/80ca8d959f2cc67c75f6d61008e3bebfe7fbc30a.1738746821.git.namcao@linutronix.de
io_uring/timeout.c

index 48fc8cf707843bfbf94afa1dca7d91f4fb51fe8b..c5fb817b1e28efd1d640088a38c95c74e3e5b575 100644 (file)
@@ -407,8 +407,7 @@ static int io_linked_timeout_update(struct io_ring_ctx *ctx, __u64 user_data,
        io = req->async_data;
        if (hrtimer_try_to_cancel(&io->timer) == -1)
                return -EALREADY;
-       hrtimer_init(&io->timer, io_timeout_get_clock(io), mode);
-       io->timer.function = io_link_timeout_fn;
+       hrtimer_setup(&io->timer, io_link_timeout_fn, io_timeout_get_clock(io), mode);
        hrtimer_start(&io->timer, timespec64_to_ktime(*ts), mode);
        return 0;
 }
@@ -430,8 +429,7 @@ static int io_timeout_update(struct io_ring_ctx *ctx, __u64 user_data,
        data->ts = *ts;
 
        list_add_tail(&timeout->list, &ctx->timeout_list);
-       hrtimer_init(&data->timer, io_timeout_get_clock(data), mode);
-       data->timer.function = io_timeout_fn;
+       hrtimer_setup(&data->timer, io_timeout_fn, io_timeout_get_clock(data), mode);
        hrtimer_start(&data->timer, timespec64_to_ktime(data->ts), mode);
        return 0;
 }
@@ -557,7 +555,6 @@ static int __io_timeout_prep(struct io_kiocb *req,
                return -EINVAL;
 
        data->mode = io_translate_timeout_mode(flags);
-       hrtimer_init(&data->timer, io_timeout_get_clock(data), data->mode);
 
        if (is_timeout_link) {
                struct io_submit_link *link = &req->ctx->submit_state.link;
@@ -568,6 +565,10 @@ static int __io_timeout_prep(struct io_kiocb *req,
                        return -EINVAL;
                timeout->head = link->last;
                link->last->flags |= REQ_F_ARM_LTIMEOUT;
+               hrtimer_setup(&data->timer, io_link_timeout_fn, io_timeout_get_clock(data),
+                             data->mode);
+       } else {
+               hrtimer_setup(&data->timer, io_timeout_fn, io_timeout_get_clock(data), data->mode);
        }
        return 0;
 }
@@ -627,7 +628,6 @@ int io_timeout(struct io_kiocb *req, unsigned int issue_flags)
        }
 add:
        list_add(&timeout->list, entry);
-       data->timer.function = io_timeout_fn;
        hrtimer_start(&data->timer, timespec64_to_ktime(data->ts), data->mode);
        raw_spin_unlock_irq(&ctx->timeout_lock);
        return IOU_ISSUE_SKIP_COMPLETE;
@@ -646,7 +646,6 @@ void io_queue_linked_timeout(struct io_kiocb *req)
        if (timeout->head) {
                struct io_timeout_data *data = req->async_data;
 
-               data->timer.function = io_link_timeout_fn;
                hrtimer_start(&data->timer, timespec64_to_ktime(data->ts),
                                data->mode);
                list_add_tail(&timeout->list, &ctx->ltimeout_list);