| From 9ab4d9a214cabc1e4cc452cc0f620dafb1b5fca0 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 1 Jul 2021 14:20:58 -0300 |
| Subject: perf llvm: Return -ENOMEM when asprintf() fails |
| |
| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| |
| [ Upstream commit c435c166dcf526ac827bc964d82cc0d5e7a1fd0b ] |
| |
| Zhihao sent a patch but it made llvm__compile_bpf() return what |
| asprintf() returns on error, which is just -1, but since this function |
| returns -errno, fix it by returning -ENOMEM for this case instead. |
| |
| Fixes: cb76371441d098 ("perf llvm: Allow passing options to llc ...") |
| Fixes: 5eab5a7ee032ac ("perf llvm: Display eBPF compiling command ...") |
| Reported-by: Hulk Robot <hulkci@huawei.com> |
| Reported-by: Zhihao Cheng <chengzhihao1@huawei.com> |
| Cc: Alexei Starovoitov <ast@kernel.org> |
| Cc: Andrii Nakryiko <andrii@kernel.org> |
| Cc: Daniel Borkmann <daniel@iogearbox.net> |
| Cc: Ingo Molnar <mingo@redhat.com> |
| Cc: Jiri Olsa <jolsa@redhat.com> |
| Cc: Nathan Chancellor <nathan@kernel.org> |
| Cc: Nick Desaulniers <ndesaulniers@google.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Yu Kuai <yukuai3@huawei.com> |
| Cc: clang-built-linux@googlegroups.com |
| Link: http://lore.kernel.org/lkml/20210609115945.2193194-1-chengzhihao1@huawei.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/perf/util/llvm-utils.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/tools/perf/util/llvm-utils.c b/tools/perf/util/llvm-utils.c |
| index dbdffb6673fe..0bf6b4d4c90a 100644 |
| --- a/tools/perf/util/llvm-utils.c |
| +++ b/tools/perf/util/llvm-utils.c |
| @@ -504,6 +504,7 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf, |
| goto errout; |
| } |
| |
| + err = -ENOMEM; |
| if (asprintf(&pipe_template, "%s -emit-llvm | %s -march=bpf %s -filetype=obj -o -", |
| template, llc_path, opts) < 0) { |
| pr_err("ERROR:\tnot enough memory to setup command line\n"); |
| @@ -524,6 +525,7 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf, |
| |
| pr_debug("llvm compiling command template: %s\n", template); |
| |
| + err = -ENOMEM; |
| if (asprintf(&command_echo, "echo -n \"%s\"", template) < 0) |
| goto errout; |
| |
| -- |
| 2.30.2 |
| |