2020-01-10 15:17:01

by Jiri Olsa

[permalink] [raw]
Subject: [PATCH] perf tools: Setup initial evlist::all_cpus value

Jann Horn reported crash in perf ftrace because evlist::all_cpus
isn't initialized if there's evlist without events, which is the
case for perf ftrace.

Adding initial initialization of evlist::all_cpus from given cpus,
regardless of events in the evlist.

Reported-by: Jann Horn <[email protected]>
Link: https://lkml.kernel.org/n/[email protected]
Signed-off-by: Jiri Olsa <[email protected]>
---
tools/lib/perf/evlist.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c
index ae9e65aa2491..5b9f2ca50591 100644
--- a/tools/lib/perf/evlist.c
+++ b/tools/lib/perf/evlist.c
@@ -164,6 +164,9 @@ void perf_evlist__set_maps(struct perf_evlist *evlist,
evlist->threads = perf_thread_map__get(threads);
}

+ if (!evlist->all_cpus && cpus)
+ evlist->all_cpus = perf_cpu_map__get(cpus);
+
perf_evlist__propagate_maps(evlist);
}

--
2.24.1


2020-01-10 17:33:39

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] perf tools: Setup initial evlist::all_cpus value

On Fri, Jan 10, 2020 at 04:15:37PM +0100, Jiri Olsa wrote:
> Jann Horn reported crash in perf ftrace because evlist::all_cpus
> isn't initialized if there's evlist without events, which is the
> case for perf ftrace.
>
> Adding initial initialization of evlist::all_cpus from given cpus,
> regardless of events in the evlist.

Acked-by: Andi Kleen <[email protected]>

>
> Reported-by: Jann Horn <[email protected]>
> Link: https://lkml.kernel.org/n/[email protected]
> Signed-off-by: Jiri Olsa <[email protected]>
> ---
> tools/lib/perf/evlist.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c
> index ae9e65aa2491..5b9f2ca50591 100644
> --- a/tools/lib/perf/evlist.c
> +++ b/tools/lib/perf/evlist.c
> @@ -164,6 +164,9 @@ void perf_evlist__set_maps(struct perf_evlist *evlist,
> evlist->threads = perf_thread_map__get(threads);
> }
>
> + if (!evlist->all_cpus && cpus)
> + evlist->all_cpus = perf_cpu_map__get(cpus);
> +
> perf_evlist__propagate_maps(evlist);
> }
>
> --
> 2.24.1
>

Subject: [tip: perf/core] libperf: Setup initial evlist::all_cpus value

The following commit has been merged into the perf/core branch of tip:

Commit-ID: cb71f7d43ece3d5a4f400f510c61b2ec7c9ce9a1
Gitweb: https://git.kernel.org/tip/cb71f7d43ece3d5a4f400f510c61b2ec7c9ce9a1
Author: Jiri Olsa <[email protected]>
AuthorDate: Fri, 10 Jan 2020 16:15:37 +01:00
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitterDate: Tue, 14 Jan 2020 12:02:19 -03:00

libperf: Setup initial evlist::all_cpus value

Jann Horn reported crash in perf ftrace because evlist::all_cpus isn't
initialized if there's evlist without events, which is the case for perf
ftrace.

Adding initial initialization of evlist::all_cpus from given cpus,
regardless of events in the evlist.

Fixes: 7736627b865d ("perf stat: Use affinity for closing file descriptors")
Reported-by: Jann Horn <[email protected]>
Signed-off-by: Jiri Olsa <[email protected]>
Acked-by: Andi Kleen <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Michael Petlan <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lore.kernel.org/lkml/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/lib/perf/evlist.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c
index ae9e65a..5b9f2ca 100644
--- a/tools/lib/perf/evlist.c
+++ b/tools/lib/perf/evlist.c
@@ -164,6 +164,9 @@ void perf_evlist__set_maps(struct perf_evlist *evlist,
evlist->threads = perf_thread_map__get(threads);
}

+ if (!evlist->all_cpus && cpus)
+ evlist->all_cpus = perf_cpu_map__get(cpus);
+
perf_evlist__propagate_maps(evlist);
}