]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rseq: Split up rseq_exit_to_user_mode()
authorThomas Gleixner <tglx@linutronix.de>
Mon, 27 Oct 2025 08:45:24 +0000 (09:45 +0100)
committerIngo Molnar <mingo@kernel.org>
Tue, 4 Nov 2025 07:35:30 +0000 (08:35 +0100)
commit7a5201ea1907534efe3a6e9c001ef4c0257cb3f0
treec219d30f1f2ee09ac220ed422802051b0e3e277a
parent70fe25a3bc53a891f0e6184c12bd55cc524cb13b
rseq: Split up rseq_exit_to_user_mode()

Separate the interrupt and syscall exit handling. Syscall exit does not
require to clear the user_irq bit as it can't be set. On interrupt exit it
can be set when the interrupt did not result in a scheduling event and
therefore the return path did not invoke the TIF work handling, which would
have cleared it.

The debug check for the event state is also not really required even when
debug mode is enabled via the static key. Debug mode is largely aiding user
space by enabling a larger amount of validation checks, which cause a
segfault when a malformed critical section is detected. In production mode
the critical section handling takes the content mostly as is and lets user
space keep the pieces when it screwed up.

On kernel changes in that area the state check is useful, but that can be
done when lockdep is enabled, which is anyway a required test scenario for
fundamental changes.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://patch.msgid.link/20251027084307.842785700@linutronix.de
include/linux/irq-entry-common.h
include/linux/rseq_entry.h