Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf stat: Fix error return code in bperf__load()

Fix to return a negative error code from the error handling case instead
of 0, as done elsewhere in this function.

Committer notes:

Added the missing {} for the now multiline 'if' block, fixing this error:

CC /tmp/build/perf/util/bpf_counter.o
util/bpf_counter.c: In function ‘bperf__load’:
util/bpf_counter.c:523:9: error: this ‘if’ clause does not guard... [-Werror=misleading-indentation]
523 | if (evsel->bperf_leader_link_fd < 0 &&
| ^~
util/bpf_counter.c:526:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
526 | goto out;
| ^~~~
cc1: all warnings being treated as errors

Fixes: 7fac83aaf2eecc9e ("perf stat: Introduce 'bperf' to share hardware PMCs with BPF")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <songliubraving@fb.com>
Cc: Yu Kuai <yukuai3@huawei.com>
Cc: Zhang Yi <yi.zhang@huawei.com>
Link: http://lore.kernel.org/lkml/20210517081254.1561564-1-yukuai3@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Yu Kuai and committed by
Arnaldo Carvalho de Melo
d3fddc35 4f2abe91

+4 -2
+4 -2
tools/perf/util/bpf_counter.c
··· 521 521 522 522 evsel->bperf_leader_link_fd = bpf_link_get_fd_by_id(entry.link_id); 523 523 if (evsel->bperf_leader_link_fd < 0 && 524 - bperf_reload_leader_program(evsel, attr_map_fd, &entry)) 524 + bperf_reload_leader_program(evsel, attr_map_fd, &entry)) { 525 + err = -1; 525 526 goto out; 526 - 527 + } 527 528 /* 528 529 * The bpf_link holds reference to the leader program, and the 529 530 * leader program holds reference to the maps. Therefore, if ··· 551 550 /* Step 2: load the follower skeleton */ 552 551 evsel->follower_skel = bperf_follower_bpf__open(); 553 552 if (!evsel->follower_skel) { 553 + err = -1; 554 554 pr_err("Failed to open follower skeleton\n"); 555 555 goto out; 556 556 }