]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rseq: Prevent hard lockup on granted time slice extension
authorNiels Pressel <npressel@ethz.ch>
Sun, 2 Aug 2026 12:44:23 +0000 (14:44 +0200)
committerThomas Gleixner <tglx@kernel.org>
Mon, 10 Aug 2026 07:37:54 +0000 (09:37 +0200)
commitada54c2ba652348c590d1ace6a2f4ff77cbbf809
treea0d71d60af6cdce6607b8d434e1bbfc0b826c654
parent075b74841bd0065a3bda3440873c747938e69b68
rseq: Prevent hard lockup on granted time slice extension

__exit_to_user_mode_loop() invokes rseq_grant_timeslice_extension() with
interrupts enabled. If the extension is granted it invokes
hrtimer_rearm_deferred_tif() to ensure that a pending deferred hrtimer
rearm is handled before exiting to user space.

Though this invokes __hrtimer_rearm_deferred() which expects to be invoked
with interrupts disabled as it takes hrtimer_cpu_base::lock with
raw_spin_lock(). That's a livelock waiting to happen and caught by lockdep:

    WARNING: ./include/linux/hrtimer_rearm.h:17 at irqentry_exit, CPU#1: slice_test
    WARNING: inconsistent lock state
    inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.

Prevent this by disabling interrupts around the invocation of
hrtimer_rearm_deferred_tif() in rseq_grant_timeslice_extension().

[ tglx: Massaged change log ]

Fixes: 15dd3a948855 ("hrtimer: Push reprogramming timers into the interrupt return path")
Signed-off-by: Niels Pressel <npressel@ethz.ch>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260802124423.51616-1-npressel@ethz.ch
include/linux/rseq_entry.h