From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753666AbbIITur (ORCPT ); Wed, 9 Sep 2015 15:50:47 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:59915 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751390AbbIITuo (ORCPT ); Wed, 9 Sep 2015 15:50:44 -0400 From: Arnaldo Carvalho de Melo To: Kan Liang Cc: Ingo Molnar , linux-kernel@vger.kernel.org, Arnaldo Carvalho de Melo , Adrian Hunter , Borislav Petkov , David Ahern , Frederic Weisbecker , Namhyung Kim , Stephane Eranian , Wang Nan Subject: [PATCH 09/13] perf event: Use machine->env to find the cpu -> socket mapping Date: Wed, 9 Sep 2015 16:50:21 -0300 Message-Id: <1441828225-667-10-git-send-email-acme@kernel.org> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1441828225-667-1-git-send-email-acme@kernel.org> References: <1441828225-667-1-git-send-email-acme@kernel.org> X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnaldo Carvalho de Melo Instead of reading /sysfs/devices/system/cpu/cpu%d/topology/physical_package_id for each sample. While at it, check that the sample has PERF_SAMPLE_CPU, i.e. that sample.cpu >= 0, to avoid an out of bounds access. Reported-by: Wang Nan Based-on-a-patch-by: Jiri Olsa Cc: Adrian Hunter Cc: Borislav Petkov Cc: David Ahern Cc: Frederic Weisbecker Cc: Kan Liang Cc: Namhyung Kim Cc: Stephane Eranian Cc: Wang Nan Link: http://lkml.kernel.org/n/tip-lkkb5iht6gbbngdpfv0nl7vh@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/event.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 0bf8c9889fc0..497157affc9c 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c @@ -1021,7 +1021,14 @@ int perf_event__preprocess_sample(const union perf_event *event, al->sym = NULL; al->cpu = sample->cpu; - al->socket = cpu_map__get_socket_id(al->cpu); + al->socket = -1; + + if (al->cpu >= 0) { + struct perf_env *env = machine->env; + + if (env && env->cpu) + al->socket = env->cpu[al->cpu].socket_id; + } if (al->map) { struct dso *dso = al->map->dso; -- 2.1.0