| From a7659353ba65c2a14f7bd4f120448c0f359d67fd Mon Sep 17 00:00:00 2001 |
| From: Jiri Olsa <jolsa@kernel.org> |
| Date: Mon, 15 Jul 2019 16:04:26 +0200 |
| Subject: perf tools: Fix proper buffer size for feature processing |
| |
| [ Upstream commit 79b2fe5e756163897175a8f57d66b26cd9befd59 ] |
| |
| After Song Liu's segfault fix for pipe mode, Arnaldo reported following |
| error: |
| |
| # perf record -o - | perf script |
| 0x514 [0x1ac]: failed to process type: 80 |
| |
| It's caused by wrong buffer size setup in feature processing, which |
| makes cpu topology feature fail, because it's using buffer size to |
| recognize its header version. |
| |
| Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Jiri Olsa <jolsa@kernel.org> |
| Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: David Carrillo-Cisneros <davidcc@google.com> |
| Cc: Kan Liang <kan.liang@linux.intel.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Song Liu <songliubraving@fb.com> |
| Fixes: e9def1b2e74e ("perf tools: Add feature header record to pipe-mode") |
| Link: http://lkml.kernel.org/r/20190715140426.32509-1-jolsa@kernel.org |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/perf/util/header.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c |
| index 26437143c9406..c892a28e7b048 100644 |
| --- a/tools/perf/util/header.c |
| +++ b/tools/perf/util/header.c |
| @@ -3081,7 +3081,7 @@ int perf_event__process_feature(struct perf_tool *tool, |
| return 0; |
| |
| ff.buf = (void *)fe->data; |
| - ff.size = event->header.size - sizeof(event->header); |
| + ff.size = event->header.size - sizeof(*fe); |
| ff.ph = &session->header; |
| |
| if (feat_ops[feat].process(&ff, NULL)) |
| -- |
| 2.20.1 |
| |