summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2010-07-08 06:06:17 +0200
committerFrederic Weisbecker <fweisbec@gmail.com>2010-07-08 06:20:15 +0200
commit97aa1052739c6a06cb6b0467dbf410613d20bc97 (patch)
tree1bcf54fbe3fe39b6941f898a6927b6ac14df9996
parent869599ceda4a035cdb3345c563b74cdeef10f790 (diff)
downloadlinux-3.10-97aa1052739c6a06cb6b0467dbf410613d20bc97.tar.gz
linux-3.10-97aa1052739c6a06cb6b0467dbf410613d20bc97.tar.bz2
linux-3.10-97aa1052739c6a06cb6b0467dbf410613d20bc97.zip
perf: Resurrect flat callchains
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 <mingo@elte.hu> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Paul Mackerras <paulus@samba.org> Cc: 2.6.31.x-2.6.34.x <stable@kernel.org>
-rw-r--r--tools/perf/util/callchain.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index 1ca73e4a272..22dbaec003d 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -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)