Commit 927c7a9e92c4 ( perf: Fix race in callchains ) introduced a mismatch in the sizing of struct callchain_cpus_entries.
nr_cpu_ids must be used instead of num_possible_cpus(), or we might get out of bound memory accesses on some machines. Signed-off-by: Eric Dumazet <[email protected]> CC: Frederic Weisbecker <[email protected]> CC: Peter Zijlstra <[email protected]> CC: Arnaldo Carvalho de Melo <[email protected]> CC: David Miller <[email protected]> CC: Stephane Eranian <[email protected]> CC: [email protected] --- kernel/perf_event.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/perf_event.c b/kernel/perf_event.c index 126a302..852ae8c 100644 --- a/kernel/perf_event.c +++ b/kernel/perf_event.c @@ -1999,8 +1999,7 @@ static int alloc_callchain_buffers(void) * accessed from NMI. Use a temporary manual per cpu allocation * until that gets sorted out. */ - size = sizeof(*entries) + sizeof(struct perf_callchain_entry *) * - num_possible_cpus(); + size = offsetof(struct callchain_cpus_entries, cpu_entries[nr_cpu_ids]); entries = kzalloc(size, GFP_KERNEL); if (!entries) _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
