summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorHe Zhe <zhe.he@windriver.com>2019-08-02 04:29:51 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2019-08-08 14:41:10 -0400
commitcf30ae726c011e0372fd4c2d588466c8b50a8907 (patch)
treede3be5a37b33a98b6cd2808aaa551db025f5be48 /tools
parent3de7ae0b2a1d86dbb23d0cb135150534fdb2e836 (diff)
perf ftrace: Fix failure to set cpumask when only one cpu is present
The buffer containing the string used to set cpumask is overwritten at the end of the string later in cpu_map__snprint_mask due to not enough memory space, when there is only one cpu. And thus causes the following failure: $ perf ftrace ls failed to reset ftrace $ This patch fixes the calculation of the cpumask string size. Signed-off-by: He Zhe <zhe.he@windriver.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexey Budankov <alexey.budankov@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Fixes: dc23103278c5 ("perf ftrace: Add support for -a and -C option") Link: http://lkml.kernel.org/r/1564734592-15624-1-git-send-email-zhe.he@windriver.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/builtin-ftrace.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index 66d5a6658daf..019312810405 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -173,7 +173,7 @@ static int set_tracing_cpumask(struct cpu_map *cpumap)
173 int last_cpu; 173 int last_cpu;
174 174
175 last_cpu = cpu_map__cpu(cpumap, cpumap->nr - 1); 175 last_cpu = cpu_map__cpu(cpumap, cpumap->nr - 1);
176 mask_size = (last_cpu + 3) / 4 + 1; 176 mask_size = last_cpu / 4 + 2; /* one more byte for EOS */
177 mask_size += last_cpu / 32; /* ',' is needed for every 32th cpus */ 177 mask_size += last_cpu / 32; /* ',' is needed for every 32th cpus */
178 178
179 cpumask = malloc(mask_size); 179 cpumask = malloc(mask_size);