The testing show that perf_ftrace_function_call() are using smp_processor_id() with preemption enabled, all the checking on CPU could be wrong after preemption, PATCH 1/2 will fix that. Besides, as Peter point out, the testing of recursion within the section between ftrace_test_recursion_trylock()/_unlock() pair also need the preemption disabled as the documentation explained, PATCH 2/2 will make sure on that. Michael Wang (2): ftrace: disable preemption on the testing of recursion ftrace: prevent preemption in perf_ftrace_function_call() arch/csky/kernel/probes/ftrace.c | 2 -- arch/parisc/kernel/ftrace.c | 2 -- arch/powerpc/kernel/kprobes-ftrace.c | 2 -- arch/riscv/kernel/probes/ftrace.c | 2 -- arch/x86/kernel/kprobes/ftrace.c | 2 -- include/linux/trace_recursion.h | 10 +++++++++- kernel/livepatch/patch.c | 6 ------ kernel/trace/trace_event_perf.c | 17 +++++++++++++---- kernel/trace/trace_functions.c | 5 ----- 9 files changed, 22 insertions(+), 26 deletions(-) -- 1.8.3.1