ftrace: replace raw_local_irq_save with local_irq_save
authorSteven Rostedt <srostedt@redhat.com>
Sat, 15 Nov 2008 20:48:29 +0000 (15:48 -0500)
committerIngo Molnar <mingo@elte.hu>
Sun, 16 Nov 2008 06:35:37 +0000 (07:35 +0100)
Impact: fix lockdep disabling itself when function tracing is enabled

The raw_local_irq_saves used in ftrace is causing problems with
lockdep. (it thinks the irq flags are out of sync and disables
itself with a warning)

The raw ops here are not needed, and the normal local_irq_save is fine.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/trace.c
kernel/trace/trace_selftest.c

index 4a904623e05d16ca304c9409de59a67d8de40cd4..dff4bee591b957f04de80f196af13c45e8d89087 100644 (file)
@@ -1051,7 +1051,7 @@ function_trace_call(unsigned long ip, unsigned long parent_ip)
         * Need to use raw, since this must be called before the
         * recursive protection is performed.
         */
-       raw_local_irq_save(flags);
+       local_irq_save(flags);
        cpu = raw_smp_processor_id();
        data = tr->data[cpu];
        disabled = atomic_inc_return(&data->disabled);
@@ -1062,7 +1062,7 @@ function_trace_call(unsigned long ip, unsigned long parent_ip)
        }
 
        atomic_dec(&data->disabled);
-       raw_local_irq_restore(flags);
+       local_irq_restore(flags);
 }
 
 #ifdef CONFIG_FUNCTION_RET_TRACER
index 24e6e075e6d65c517303390bba7314de39918ca2..5cb64ea061b515ec5da3511ae7e6f71c4266e4c9 100644 (file)
@@ -52,7 +52,7 @@ static int trace_test_buffer(struct trace_array *tr, unsigned long *count)
        int cpu, ret = 0;
 
        /* Don't allow flipping of max traces now */
-       raw_local_irq_save(flags);
+       local_irq_save(flags);
        __raw_spin_lock(&ftrace_max_lock);
 
        cnt = ring_buffer_entries(tr->buffer);
@@ -63,7 +63,7 @@ static int trace_test_buffer(struct trace_array *tr, unsigned long *count)
                        break;
        }
        __raw_spin_unlock(&ftrace_max_lock);
-       raw_local_irq_restore(flags);
+       local_irq_restore(flags);
 
        if (count)
                *count = cnt;