diff options
Diffstat (limited to 'kernel/trace/trace_branch.c')
| -rw-r--r-- | kernel/trace/trace_branch.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/trace/trace_branch.c b/kernel/trace/trace_branch.c index 95e96842ed2..d594da0dc03 100644 --- a/kernel/trace/trace_branch.c +++ b/kernel/trace/trace_branch.c @@ -32,6 +32,7 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect)  {  	struct ftrace_event_call *call = &event_branch;  	struct trace_array *tr = branch_tracer; +	struct trace_array_cpu *data;  	struct ring_buffer_event *event;  	struct trace_branch *entry;  	struct ring_buffer *buffer; @@ -51,11 +52,12 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect)  	local_irq_save(flags);  	cpu = raw_smp_processor_id(); -	if (atomic_inc_return(&tr->data[cpu]->disabled) != 1) +	data = per_cpu_ptr(tr->trace_buffer.data, cpu); +	if (atomic_inc_return(&data->disabled) != 1)  		goto out;  	pc = preempt_count(); -	buffer = tr->buffer; +	buffer = tr->trace_buffer.buffer;  	event = trace_buffer_lock_reserve(buffer, TRACE_BRANCH,  					  sizeof(*entry), flags, pc);  	if (!event) @@ -80,7 +82,7 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect)  		__buffer_unlock_commit(buffer, event);   out: -	atomic_dec(&tr->data[cpu]->disabled); +	atomic_dec(&data->disabled);  	local_irq_restore(flags);  }  |