Commit 2c2b322acdcc for kernel

commit 2c2b322acdcc78575b8d6afa64a085cf92e03c12
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Fri Jul 24 19:32:10 2026 -0400

    tracing: perf: Fix stale head for perf syscall tracing

    The code that can read the user space parameters of a system call may
    enable preemption and migrate. The head of the per CPU perf events list
    may be pointing to the wrong CPU event if the code migrates the task.

    Reassign the head pointer if the system call event called the code that
    may have caused a migration.

    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20260724193210.03fae1d6@gandalf.local.home
    Reported-by: Sashiko <>
    Link: https://sashiko.dev/#/patchset/20260717173252.3431565-1-usama.arif%40linux.dev
    Fixes: edca33a56297d ("tracing: Fix failure to read user space from system call trace events")
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
index e98ee7e1e66f..8a4f3c75e39f 100644
--- a/kernel/trace/trace_syscalls.c
+++ b/kernel/trace/trace_syscalls.c
@@ -1451,6 +1451,11 @@ static void perf_syscall_enter(void *ignore, struct pt_regs *regs, long id)
 		if (syscall_get_data(sys_data, args, &user_ptr,
 				     &size, user_sizes, &uargs, buf_size) < 0)
 			return;
+
+		/* The above may have caused a migration */
+		head = this_cpu_ptr(sys_data->enter_event->perf_events);
+		if (hlist_empty(head))
+			return;
 	}

 	/* get the size after alignment with the u32 buffer size field */