x86, hw-branch-tracer: allocate selftest iterator on heap
authorMarkus Metzger <markus.t.metzger@intel.com>
Fri, 3 Apr 2009 14:43:41 +0000 (16:43 +0200)
committerIngo Molnar <mingo@elte.hu>
Tue, 7 Apr 2009 11:36:21 +0000 (13:36 +0200)
Allocate the trace_iterator for the hw-branch-tracer selftest on the heap.

Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
Cc: roland@redhat.com
Cc: eranian@googlemail.com
Cc: oleg@redhat.com
Cc: juan.villacis@intel.com
Cc: ak@linux.jf.intel.com
LKML-Reference: <20090403144556.578777000@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/trace_selftest.c

index 499d01c44cd17b9a95e843b5b062b900185c4886..00dd6485bdd7e7abf390a6fcbe1c27d626a8531e 100644 (file)
@@ -757,7 +757,7 @@ int
 trace_selftest_startup_hw_branches(struct tracer *trace,
                                   struct trace_array *tr)
 {
-       struct trace_iterator iter;
+       struct trace_iterator *iter;
        struct tracer tracer;
        unsigned long count;
        int ret;
@@ -777,17 +777,21 @@ trace_selftest_startup_hw_branches(struct tracer *trace,
         * The hw-branch tracer needs to collect the trace from the various
         * cpu trace buffers - before tracing is stopped.
         */
-       memset(&iter, 0, sizeof(iter));
+       iter = kzalloc(sizeof(*iter), GFP_KERNEL);
+       if (!iter)
+               return -ENOMEM;
+
        memcpy(&tracer, trace, sizeof(tracer));
 
-       iter.trace = &tracer;
-       iter.tr = tr;
-       iter.pos = -1;
-       mutex_init(&iter.mutex);
+       iter->trace = &tracer;
+       iter->tr = tr;
+       iter->pos = -1;
+       mutex_init(&iter->mutex);
 
-       trace->open(&iter);
+       trace->open(iter);
 
-       mutex_destroy(&iter.mutex);
+       mutex_destroy(&iter->mutex);
+       kfree(iter);
 
        tracing_stop();