Commit 3424d8c18a7d for kernel

commit 3424d8c18a7da1010d03391a22e728b857d0d5c5
Merge: 3a0dd7ba4f44 05c033db7e9a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Aug 18 15:00:56 2026 -0700

    Merge tag 'core-entry-2026-08-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

    Pull generic entry code updates from Thomas Gleixner:

     - Make syscall user dispatching configurable

       Not all architectures can makes use of syscall user dispatching.
       Allow them to disable the feature completely.

     - Consolidate stack randomization for the generic entry code and the
       architectures using it.

       Stack randomization on syscall entry was sprinkled throughout the
       architecture specific low level entry code and in some cases at the
       wrong points, e.g. before establishing state, which violates the
       non-instrumentable constraints of that code.

       Clean this up by integrating stack randomization into the generic
       entry code helpers so that it is invoked at the earliest possible
       point right after establishing state and converting all generic entry
       code using architecture over.

     - Clean up the syscall number handling in the generic entry code. It
       works correctly for architectures which have a separate return value
       storage in pt_regs, but fails to distinguish the case where user
       space handed in -1 as syscall number from the case where the entry
       code rejects it by returning -1 to the callers. Aside of that the
       return value functionality of those interfaces is not really
       intuitive.

       Fix this by separating the decision to reject a syscall (user
       dispatch, ptrace, seccomp ...) from the potential modification of the
       syscall number through these mechanisms.

       This solves most of the problems for architectures which do not have
       a separate return value storage in pt_regs except for the case where
       a tracepoint has a BPF script or a probe attached which overwrite
       both the syscall number and the return value. But that's a problem
       which cannot be solved in the generic code, that only can be
       addressed by separating the storage model in the affected
       architectures.

    * tag 'core-entry-2026-08-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (23 commits)
      entry, treewide: Make syscall_enter_from_user_mode[_work]() indicate syscall execution
      entry: Make return type of syscall_trace_enter() bool
      entry: Rework trace_syscall_enter()
      entry: Rework syscall_audit_enter()
      syscall_user_dispatch: Introduce ARCH_SUPPORTS_SYSCALL_USER_DISPATCH
      entry: Fix seccomp bypass after ptrace with TSYNC
      x86/entry: Simplify the syscall number logic
      x86/entry: Get rid of the sys_ni_syscall() indirection
      x86/entry: Make syscall functions static
      ptrace, treewide: Rename ptrace_report_syscall_entry() to ptrace_report_syscall_permit_entry()
      seccomp, treewide: Rename and convert __secure_computing() to return boolean
      entry: Use syscall number instead of rereading it
      entry: Remove syscall_enter_from_user_mode()
      x86/syscall: Use [syscall_]enter_from_user_mode_randomize_stack()
      s390/syscall: Use enter_from_user_mode_randomize_stack()
      riscv/syscall: Use syscall_enter_from_user_mode_randomize_stack()
      powerpc/syscall: Use syscall_enter_from_user_mode_randomize_stack()
      loongarch/syscall: Use syscall_enter_from_user_mode_randomize_stack()
      entry: Provide [syscall_]enter_from_user_mode_randomize_stack()
      randomize_kstack: Provide add_random_kstack_offset_irqsoff()
      ...

diff --cc arch/powerpc/kernel/syscall.c
index 9d1b29f44ea0,1440dcabe052..4916c205c4bb
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@@ -19,12 -18,9 +18,12 @@@ notrace long system_call_exception(stru
  	long ret;
  	syscall_fn f;

- 	add_random_kstack_offset();
- 	r0 = syscall_enter_from_user_mode(regs, r0);
+ 	if (unlikely(!syscall_enter_from_user_mode_randomize_stack(regs, &r0)))
+ 		return syscall_get_error(current, regs);

 +	if (unlikely(test_and_clear_thread_flag(TIF_SYSCALL_RET)))
 +		return syscall_get_error(current, regs);
 +
  	if (unlikely(r0 >= NR_syscalls)) {
  		if (unlikely(trap_is_unsupported_scv(regs))) {
  			/* Unsupported scv vector */