From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755482AbdKCOXP (ORCPT ); Fri, 3 Nov 2017 10:23:15 -0400 Received: from terminus.zytor.com ([65.50.211.136]:37397 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750821AbdKCOXN (ORCPT ); Fri, 3 Nov 2017 10:23:13 -0400 Date: Fri, 3 Nov 2017 07:21:56 -0700 From: tip-bot for Namhyung Kim Message-ID: Cc: acme@redhat.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, mingo@kernel.org, yao.jin@linux.intel.com, hpa@zytor.com, namhyung@kernel.org, jolsa@redhat.com, milian.wolff@kdab.com Reply-To: hpa@zytor.com, mingo@kernel.org, yao.jin@linux.intel.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, acme@redhat.com, milian.wolff@kdab.com, jolsa@redhat.com, namhyung@kernel.org In-Reply-To: <20171020051533.GA2746@sejong> References: <20171020051533.GA2746@sejong> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf callchain: Fix double mapping al->addr for children without self period Git-Commit-ID: d6332a176b869df1839abb26c8f80026a66d21d6 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: d6332a176b869df1839abb26c8f80026a66d21d6 Gitweb: https://git.kernel.org/tip/d6332a176b869df1839abb26c8f80026a66d21d6 Author: Namhyung Kim AuthorDate: Fri, 20 Oct 2017 14:15:33 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Tue, 31 Oct 2017 16:14:50 -0300 perf callchain: Fix double mapping al->addr for children without self period Milian Wolff found a problem he described in [1] and that for him would get fixed: "Note how most of the large offset values are now gone. Most notably, we get proper srcline resolution for the random.h and complex headers." Then Namhyung found the root cause: "I looked into it and found a bug handling cumulative (children) entries. For children entries that have no self period, the al->addr (so he->ip) ends up having an doubly-mapped address. It seems to be there from the beginning but only affects entries that have no srclines - finding srcline itself is done using a different address but it will show the invalid address if no srcline was found. I think we should fix the commit c7405d85d7a3 ("perf tools: Update cpumode for each cumulative entry")." [1] https://lkml.kernel.org/r/20171018185350.14893-7-milian.wolff@kdab.com Reported-by: Milian Wolff Signed-off-by: Namhyung Kim Tested-by: Milian Wolff Cc: Jin Yao Cc: Jiri Olsa Cc: kernel-team@lge.com Fixes: c7405d85d7a3 ("perf tools: Update cpumode for each cumulative entry") Link: https://lkml.kernel.org/r/20171020051533.GA2746@sejong Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/callchain.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c index 3a39169..8370121 100644 --- a/tools/perf/util/callchain.c +++ b/tools/perf/util/callchain.c @@ -1091,10 +1091,7 @@ int fill_callchain_info(struct addr_location *al, struct callchain_cursor_node * al->map = node->map; al->sym = node->sym; al->srcline = node->srcline; - if (node->map) - al->addr = node->map->map_ip(node->map, node->ip); - else - al->addr = node->ip; + al->addr = node->ip; if (al->sym == NULL) { if (hide_unresolved)