Commit 18ecff396c9e for kernel

commit 18ecff396c9edb9add34f612d9fb99bb34833cc0
Merge: c107785c7e8d f26b098d9374
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Mar 5 08:05:05 2026 -0800

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

    Pull tracing fixes from Steven Rostedt:

     - Fix thresh_return of function graph tracer

       The update to store data on the shadow stack removed the abuse of
       using the task recursion word as a way to keep track of what
       functions to ignore. The trace_graph_return() was updated to handle
       this, but when function_graph tracer is using a threshold (only trace
       functions that took longer than a specified time), it uses
       trace_graph_thresh_return() instead.

       This function was still incorrectly using the task struct recursion
       word causing the function graph tracer to permanently set all
       functions to "notrace"

     - Fix thresh_return nosleep accounting

       When the calltime was moved to the shadow stack storage instead of
       being on the fgraph descriptor, the calculations for the amount of
       sleep time was updated. The calculation was done in the
       trace_graph_thresh_return() function, which also called the
       trace_graph_return(), which did the calculation again, causing the
       time to be doubled.

       Remove the call to trace_graph_return() as what it needed to do
       wasn't that much, and just do the work in
       trace_graph_thresh_return().

     - Fix syscall trace event activation on boot up

       The syscall trace events are pseudo events attached to the
       raw_syscall tracepoints. When the first syscall event is enabled, it
       enables the raw_syscall tracepoint and doesn't need to do anything
       when a second syscall event is also enabled.

       When events are enabled via the kernel command line, syscall events
       are partially enabled as the enabling is called before rcu_init. This
       is due to allow early events to be enabled immediately. Because
       kernel command line events do not distinguish between different types
       of events, the syscall events are enabled here but are not fully
       functioning. After rcu_init, they are disabled and re-enabled so that
       they can be fully enabled.

       The problem happened is that this "disable-enable" is done one at a
       time. If more than one syscall event is specified on the command
       line, by disabling them one at a time, the counter never gets to
       zero, and the raw_syscall is not disabled and enabled, keeping the
       syscall events in their non-fully functional state.

       Instead, disable all events and re-enabled them all, as that will
       ensure the raw_syscall event is also disabled and re-enabled.

     - Disable preemption in ftrace pid filtering

       The ftrace pid filtering attaches to the fork and exit tracepoints to
       add or remove pids that should be traced. They access variables
       protected by RCU (preemption disabled). Now that tracepoint callbacks
       are called with preemption enabled, this protection needs to be added
       explicitly, and not depend on the functions being called with
       preemption disabled.

     - Disable preemption in event pid filtering

       The event pid filtering needs the same preemption disabling guards as
       ftrace pid filtering.

     - Fix accounting of the memory mapped ring buffer on fork

       Memory mapping the ftrace ring buffer sets the vm_flags to DONTCOPY.
       But this does not prevent the application from calling
       madvise(MADVISE_DOFORK). This causes the mapping to be copied on
       fork. After the first tasks exits, the mapping is considered unmapped
       by everyone. But when he second task exits, the counter goes below
       zero and triggers a WARN_ON.

       Since nothing prevents two separate tasks from mmapping the ftrace
       ring buffer (although two mappings may mess each other up), there's
       no reason to stop the memory from being copied on fork.

       Update the vm_operations to have an ".open" handler to update the
       accounting and let the ring buffer know someone else has it mapped.

     - Add all ftrace headers in MAINTAINERS file

       The MAINTAINERS file only specifies include/linux/ftrace.h But misses
       ftrace_irq.h and ftrace_regs.h. Make the file use wildcards to get
       all *ftrace* files.

    * tag 'trace-v7.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
      ftrace: Add MAINTAINERS entries for all ftrace headers
      tracing: Fix WARN_ON in tracing_buffers_mmap_close
      tracing: Disable preemption in the tracepoint callbacks handling filtered pids
      ftrace: Disable preemption in the tracepoint callbacks handling filtered pids
      tracing: Fix syscall events activation by ensuring refcount hits zero
      fgraph: Fix thresh_return nosleeptime double-adjust
      fgraph: Fix thresh_return clear per-task notrace