Commit ac57fa9faf71 for kernel

commit ac57fa9faf716c6a0e30128c2c313443cf633019
Merge: 11ac4ce3f708 50b35c9e50a8
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sun Mar 22 11:10:31 2026 -0700

    Merge tag 'trace-v7.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

    Pull tracing fixes from Steven Rostedt:

     - Revert "tracing: Remove pid in task_rename tracing output"

       A change was made to remove the pid field from the task_rename event
       because it was thought that it was always done for the current task
       and recording the pid would be redundant. This turned out to be
       incorrect and there are a few corner case where this is not true and
       caused some regressions in tooling.

     - Fix the reading from user space for migration

       The reading of user space uses a seq lock type of logic where it uses
       a per-cpu temporary buffer and disables migration, then enables
       preemption, does the copy from user space, disables preemption,
       enables migration and checks if there was any schedule switches while
       preemption was enabled. If there was a context switch, then it is
       considered that the per-cpu buffer could be corrupted and it tries
       again. There's a protection check that tests if it takes a hundred
       tries, it issues a warning and exits out to prevent a live lock.

       This was triggered because the task was selected by the load balancer
       to be migrated to another CPU, every time preemption is enabled the
       migration task would schedule in try to migrate the task but can't
       because migration is disabled and let it run again. This caused the
       scheduler to schedule out the task every time it enabled preemption
       and made the loop never exit (until the 100 iteration test
       triggered).

       Fix this by enabling and disabling preemption and keeping migration
       enabled if the reading from user space needs to be done again. This
       will let the migration thread migrate the task and the copy from user
       space will likely pass on the next iteration.

     - Fix trace_marker copy option freeing

       The "copy_trace_marker" option allows a tracing instance to get a
       copy of a write to the trace_marker file of the top level instance.
       This is managed by a link list protected by RCU. When an instance is
       removed, a check is made if the option is set, and if so
       synchronized_rcu() is called.

       The problem is that an iteration is made to reset all the flags to
       what they were when the instance was created (to perform clean ups)
       was done before the check of the copy_trace_marker option and that
       option was cleared, so the synchronize_rcu() was never called.

       Move the clearing of all the flags after the check of
       copy_trace_marker to do synchronize_rcu() so that the option is still
       set if it was before and the synchronization is performed.

     - Fix entries setting when validating the persistent ring buffer

       When validating the persistent ring buffer on boot up, the number of
       events per sub-buffer is added to the sub-buffer meta page. The
       validator was updating cpu_buffer->head_page (the first sub-buffer of
       the per-cpu buffer) and not the "head_page" variable that was
       iterating the sub-buffers. This was causing the first sub-buffer to
       be assigned the entries for each sub-buffer and not the sub-buffer
       that was supposed to be updated.

     - Use "hash" value to update the direct callers

       When updating the ftrace direct callers, it assigned a temporary
       callback to all the callback functions of the ftrace ops and not just
       the functions represented by the passed in hash. This causes an
       unnecessary slow down of the functions of the ftrace_ops that is not
       being modified. Only update the functions that are going to be
       modified to call the ftrace loop function so that the update can be
       made on those functions.

    * tag 'trace-v7.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
      ftrace: Use hash argument for tmp_ops in update_ftrace_direct_mod
      ring-buffer: Fix to update per-subbuf entries of persistent ring buffer
      tracing: Fix trace_marker copy link list updates
      tracing: Fix failure to read user space from system call trace events
      tracing: Revert "tracing: Remove pid in task_rename tracing output"