]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
io_uring: Use helper function hrtimer_update_function()
authorNam Cao <namcao@linutronix.de>
Wed, 5 Feb 2025 10:55:14 +0000 (11:55 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 18 Feb 2025 16:41:35 +0000 (17:41 +0100)
The field 'function' of struct hrtimer should not be changed directly, as
the write is lockless and a concurrent timer expiry might end up using the
wrong function pointer.

Switch to use hrtimer_update_function() which also performs runtime checks
that it is safe to modify the callback.

Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/9b33f490fb1d207d3918ef5e116dc3412ae35c1e.1738746927.git.namcao@linutronix.de
io_uring/io_uring.c

index ceacf6230e342a04fbad4344c6508dc7a9172ca2..936f8b4106cf3157ad47a23a0492b3bec496f6ef 100644 (file)
@@ -2421,7 +2421,7 @@ static enum hrtimer_restart io_cqring_min_timer_wakeup(struct hrtimer *timer)
                        goto out_wake;
        }
 
-       iowq->t.function = io_cqring_timer_wakeup;
+       hrtimer_update_function(&iowq->t, io_cqring_timer_wakeup);
        hrtimer_set_expires(timer, iowq->timeout);
        return HRTIMER_RESTART;
 out_wake: