perf: Resurrect flat callchains
authorFrederic Weisbecker <[email protected]>
Thu, 8 Jul 2010 04:06:17 +0000 (06:06 +0200)
committerFrederic Weisbecker <[email protected]>
Thu, 8 Jul 2010 04:20:15 +0000 (06:20 +0200)
Initialize the callchain radix tree root correctly.

When we walk through the parents, we must stop after the root, but
since it wasn't well initialized, its parent pointer was random.

Also the number of hits was random because uninitialized, hence it
was part of the callchain while the root doesn't contain anything.

This fixes segfaults and percentages followed by empty callchains
while running:

perf report -g flat

Reported-by: Ingo Molnar <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: 2.6.31.x-2.6.34.x <[email protected]>
tools/perf/util/callchain.h

index 1ca73e4a2723997099973963f8477bdbbafcc909..22dbaec003d544d8da71bee8fe435d4e700feaf9 100644 (file)
@@ -49,6 +49,9 @@ static inline void callchain_init(struct callchain_node *node)
        INIT_LIST_HEAD(&node->brothers);
        INIT_LIST_HEAD(&node->children);
        INIT_LIST_HEAD(&node->val);
+
+       node->parent = NULL;
+       node->hit = 0;
 }
 
 static inline u64 cumul_hits(struct callchain_node *node)