perf: Fix callchain hit bad cast on ascii display [Linux 2.6.37]

This Linux kernel change "perf: Fix callchain hit bad cast on ascii display" is included in the Linux 2.6.37 release. This change is authored by Frederic Weisbecker <fweisbec [at] gmail.com> on Mon Jan 3 16:13:11 2011 +0100. The commit for this change in Linux stable tree is d425de5 (patch).

perf: Fix callchain hit bad cast on ascii display

ipchain__fprintf_graph() casts the number of hits in a branch as an
int, which means we lose its highests bits.

This results in meaningless number of callchain hits in perf.data
that have a high number of hits recorded, typically those that have
callchain branches hits appearing more than INT_MAX. This happens
easily as those are pondered by the event period.

Reported-by: Nick Piggin <npiggin@kernel.dk>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>

There are 2 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 tools/perf/util/hist.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 2022e87..76bcc35c 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -356,7 +356,7 @@ static size_t ipchain__fprintf_graph_line(FILE *fp, int depth, int depth_mask,

 static size_t ipchain__fprintf_graph(FILE *fp, struct callchain_list *chain,
                     int depth, int depth_mask, int period,
-                    u64 total_samples, int hits,
+                    u64 total_samples, u64 hits,
                     int left_margin)
 {
    int i;

Leave a Reply

Your email address will not be published. Required fields are marked *