On Tue, Dec 01, 2015 at 11:56:55AM -0500, Steven Rostedt wrote: SNIP
> -static void ftrace_ops_recurs_func(unsigned long ip, unsigned long parent_ip, > +static void ftrace_ops_assist_func(unsigned long ip, unsigned long parent_ip, > struct ftrace_ops *op, struct pt_regs *regs) > { > int bit; > > + if ((op->flags & FTRACE_OPS_FL_RCU) && !rcu_is_watching()) > + return; > + > bit = trace_test_and_set_recursion(TRACE_LIST_START, TRACE_LIST_MAX); > if (bit < 0) > return; > > - op->func(ip, parent_ip, op, regs); > + preempt_disable_notrace(); > > + if (!(op->flags & FTRACE_OPS_FL_PER_CPU) || > + ftrace_function_local_disabled(op)) { should be !ftrace_function_local_disabled(op) in here, I passed my test with attached patch thanks, jirka > + op->func(ip, parent_ip, op, regs); > + } > + > + preempt_enable_notrace(); > trace_clear_recursion(bit); > } SNIP --- diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 710430fcfd9c..ad0e0e7eaea2 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -115,7 +115,7 @@ static struct ftrace_ops *ftrace_ops_list __read_mostly = &ftrace_list_end; ftrace_func_t ftrace_trace_function __read_mostly = ftrace_stub; static struct ftrace_ops global_ops; -static void ftrace_ops_recurs_func(unsigned long ip, unsigned long parent_ip, +static void ftrace_ops_assist_func(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *op, struct pt_regs *regs); #if ARCH_SUPPORTS_FTRACE_OPS @@ -5180,7 +5180,7 @@ static void ftrace_ops_assist_func(unsigned long ip, unsigned long parent_ip, preempt_disable_notrace(); if (!(op->flags & FTRACE_OPS_FL_PER_CPU) || - ftrace_function_local_disabled(op)) { + !ftrace_function_local_disabled(op)) { op->func(ip, parent_ip, op, regs); } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/