| From 97aa1052739c6a06cb6b0467dbf410613d20bc97 Mon Sep 17 00:00:00 2001 |
| From: Frederic Weisbecker <fweisbec@gmail.com> |
| Date: Thu, 8 Jul 2010 06:06:17 +0200 |
| Subject: perf: Resurrect flat callchains |
| |
| From: Frederic Weisbecker <fweisbec@gmail.com> |
| |
| commit 97aa1052739c6a06cb6b0467dbf410613d20bc97 upstream. |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| tools/perf/util/callchain.h | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/tools/perf/util/callchain.h |
| +++ b/tools/perf/util/callchain.h |
| @@ -48,6 +48,9 @@ static inline void callchain_init(struct |
| 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) |