diff options
Diffstat (limited to 'kernel/trace/trace_event_perf.c')
| -rw-r--r-- | kernel/trace/trace_event_perf.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c index 6aed10e2f7ce..a114549720d6 100644 --- a/kernel/trace/trace_event_perf.c +++ b/kernel/trace/trace_event_perf.c @@ -400,7 +400,8 @@ void *perf_trace_buf_alloc(int size, struct pt_regs **regs, int *rctxp)  	BUILD_BUG_ON(PERF_MAX_TRACE_SIZE % sizeof(unsigned long));  	if (WARN_ONCE(size > PERF_MAX_TRACE_SIZE, -		      "perf buffer not large enough")) +		      "perf buffer not large enough, wanted %d, have %d", +		      size, PERF_MAX_TRACE_SIZE))  		return NULL;  	*rctxp = rctx = perf_swevent_get_recursion_context(); @@ -441,13 +442,13 @@ perf_ftrace_function_call(unsigned long ip, unsigned long parent_ip,  	if (!rcu_is_watching())  		return; -	if ((unsigned long)ops->private != smp_processor_id()) -		return; -  	bit = ftrace_test_recursion_trylock(ip, parent_ip);  	if (bit < 0)  		return; +	if ((unsigned long)ops->private != smp_processor_id()) +		goto out; +  	event = container_of(ops, struct perf_event, ftrace_ops);  	/*  |