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()