On 10/31/24 9:14 AM, Nam Cao wrote: > The IORING_OP_TIMEOUT command uses hrtimer underneath. The timer's callback > function is setup in io_timeout(), and then the callback function is setup > again when the timer is rearmed. > > Since the callback function is the same for both cases, the latter setup is > redundant, therefore remove it. > > Signed-off-by: Nam Cao <namcao@xxxxxxxxxxxxx> > Cc: Jens Axboe <axboe@xxxxxxxxx> > --- > io_uring/timeout.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/io_uring/timeout.c b/io_uring/timeout.c > index 9973876d91b0..2ffe5e1dc68a 100644 > --- a/io_uring/timeout.c > +++ b/io_uring/timeout.c > @@ -76,7 +76,6 @@ static void io_timeout_complete(struct io_kiocb *req, struct io_tw_state *ts) > /* re-arm timer */ > spin_lock_irq(&ctx->timeout_lock); > list_add(&timeout->list, ctx->timeout_list.prev); > - data->timer.function = io_timeout_fn; > hrtimer_start(&data->timer, timespec64_to_ktime(data->ts), data->mode); > spin_unlock_irq(&ctx->timeout_lock); > return; Should be fine, io_timeout_complete() is only used for non-linked timeouts. Reviewed-by: Jens Axboe <axboe@xxxxxxxxx: -- Jens Axboe