Messages in this thread Patch in this message | | | From | Arnaldo Carvalho de Melo <> | Subject | [PATCH 09/13] perf event: Use machine->env to find the cpu -> socket mapping | Date | Wed, 9 Sep 2015 16:50:21 -0300 |
| |
From: Arnaldo Carvalho de Melo <acme@redhat.com>
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 <wangnan0@huawei.com> Based-on-a-patch-by: Jiri Olsa <jolsa@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Borislav Petkov <bp@suse.de> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Kan Liang <kan.liang@intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Stephane Eranian <eranian@google.com> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-lkkb5iht6gbbngdpfv0nl7vh@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- 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
| |