X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=kernel%2Ftrace%2Ftrace_irqsoff.c;h=03cdff84d026a74b0daf9e6c5ba02665752bf806;hb=d81e72c521d46ca43c1afd2e2577d5a09279196f;hp=e4e56589ec1d392c1734ddff45e87b6fc2dde2fb;hpb=90b90d06db0be30aeb89b6b4ab618d644211a85e;p=cascardo%2Flinux.git diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c index e4e56589ec1d..03cdff84d026 100644 --- a/kernel/trace/trace_irqsoff.c +++ b/kernel/trace/trace_irqsoff.c @@ -109,8 +109,12 @@ static int func_prolog_dec(struct trace_array *tr, return 0; local_save_flags(*flags); - /* slight chance to get a false positive on tracing_cpu */ - if (!irqs_disabled_flags(*flags)) + /* + * Slight chance to get a false positive on tracing_cpu, + * although I'm starting to think there isn't a chance. + * Leave this for now just to be paranoid. + */ + if (!irqs_disabled_flags(*flags) && !preempt_count()) return 0; *data = per_cpu_ptr(tr->trace_buffer.data, cpu); @@ -622,7 +626,6 @@ static int __irqsoff_tracer_init(struct trace_array *tr) irqsoff_trace = tr; /* make sure that the tracer is visible */ smp_wmb(); - tracing_reset_online_cpus(&tr->trace_buffer); ftrace_init_array_ops(tr, irqsoff_tracer_call);