Commit e4fb7e5e8e7e for kernel

commit e4fb7e5e8e7e9edc167c3057802e440b77dcb856
Merge: 7475ea8b5861 1ffd6efb1b58
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Nov 9 15:36:59 2026 -0800

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

    Pull probe fixes from Masami Hiramatsu:
     "Fix registration and unregistration error handling:

       - Release the instruction slot via arch_remove_kprobe() and propagate
         the error code when arm_kprobe() fails in
         __register_kprobe() instead of leaking the slot and returning 0.

       - Skip rethook_free() and kretprobe holder cleanup in
         unregister_kretprobes() when __unregister_kprobe_top() fails, and
         clear rp->rh after synchronize_rcu() to avoid double free and NULL
         pointer dereferences.

       - Resolve the target address up-front in register_kretprobe() and
         check for re-registration before allocating resources so
         symbol_name-based re-registration does not corrupt the active
         kretprobe on error.

      Fix optprobe state transitions during forced unoptimization:

       - Disarm a disabled optprobe in unoptimize_kprobe() when forced
         unoptimization moves it directly to a cooling or freeing list, for
         preventing breakpoint callback of freed probes.

       - Skip disarming unhashed optprobes in the optimizer dispatch path so
         a newly registered probe at the same address does not get disarmed
         (or have freed module text written to).

       - Keep a reused cooling optprobe marked disabled in
         reuse_unused_kprobe() so register_aggr_kprobe() or enable_kprobe()
         properly arms it, and skip redundant force-unoptimization cleanup
         for already-unoptimized cooling probes.

      Fix symstr buffer overflow and eprobe triggers:

       - Format symstr symbols into a temporary buffer and copy only up to
         the reserved field length (updating __data_loc accordingly) to
         prevent overwriting the trace record if a probed pointer changes
         between sizing and storing passes.

       - Install and remove the eprobe event trigger for each trace instance
         file that enables the eprobe rather than only on first enable and
         last disable, so secondary instances record events and disabled
         triggers do not reference freed eprobes.

      Replace printk() with trace_printk() in probe handlers:

       - Replace printk() and stack_trace_print() with trace_printk() and
         trace_dump_stack() in kprobe and fprobe sample modules, and depend
         on CONFIG_EVENT_TRACING.

       - Document in kprobes.rst and fprobe.rst that calling printk()
         directly from probe handlers can deadlock on console or scheduler
         locks and recommend trace_printk() instead"

    * tag 'probes-fixes-v7.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
      kprobes: Arm reused optprobe on cooling list
      kprobes: Do not disarm unhashed optprobe on dispatch
      kprobes: Disarm disabled optprobe on forced unoptimization
      tracing/eprobe: Install the trigger for every instance that enables the eprobe
      tracing/probes: bound symstr stores to reserved length
      docs: trace: Warn against using printk() in probe handlers
      samples/fprobe: Use trace_printk() and trace_dump_stack()
      samples/kprobes: Use trace_printk() in probe handlers
      kprobes: Validate re-registration earlier in register_kretprobe()
      kprobes: Fix double free and NULL deref in unregister_kretprobes()
      kprobes: Fix error return and slot leak in __register_kprobe()