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

perf bpf: Stop using deprecated bpf_load_program() API

bpf_load_program() API is deprecated, remove perf's usage of the
deprecated function. Add a __weak function declaration for libbpf
version compatibility.

Signed-off-by: Christy Lee <christylee@fb.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: bpf@vger.kernel.org
Cc: kernel-team@fb.com
Link: https://lore.kernel.org/bpf/20220212073054.1052880-2-andrii@kernel.org
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Christy Lee and committed by
Arnaldo Carvalho de Melo
710f6c38 bcaf0a97

+17 -10
+4 -10
tools/perf/tests/bpf.c
··· 281 281 282 282 static int check_env(void) 283 283 { 284 + LIBBPF_OPTS(bpf_prog_load_opts, opts); 284 285 int err; 285 - unsigned int kver_int; 286 286 char license[] = "GPL"; 287 287 288 288 struct bpf_insn insns[] = { ··· 290 290 BPF_EXIT_INSN(), 291 291 }; 292 292 293 - err = fetch_kernel_version(&kver_int, NULL, 0); 293 + err = fetch_kernel_version(&opts.kern_version, NULL, 0); 294 294 if (err) { 295 295 pr_debug("Unable to get kernel version\n"); 296 296 return err; 297 297 } 298 - 299 - /* temporarily disable libbpf deprecation warnings */ 300 - #pragma GCC diagnostic push 301 - #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 302 - err = bpf_load_program(BPF_PROG_TYPE_KPROBE, insns, 303 - ARRAY_SIZE(insns), 304 - license, kver_int, NULL, 0); 305 - #pragma GCC diagnostic pop 298 + err = bpf_prog_load(BPF_PROG_TYPE_KPROBE, NULL, license, insns, 299 + ARRAY_SIZE(insns), &opts); 306 300 if (err < 0) { 307 301 pr_err("Missing basic BPF support, skip this test: %s\n", 308 302 strerror(errno));
+13
tools/perf/util/bpf-event.c
··· 33 33 return err ? ERR_PTR(err) : btf; 34 34 } 35 35 36 + int __weak bpf_prog_load(enum bpf_prog_type prog_type, 37 + const char *prog_name __maybe_unused, 38 + const char *license, 39 + const struct bpf_insn *insns, size_t insn_cnt, 40 + const struct bpf_prog_load_opts *opts) 41 + { 42 + #pragma GCC diagnostic push 43 + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 44 + return bpf_load_program(prog_type, insns, insn_cnt, license, 45 + opts->kern_version, opts->log_buf, opts->log_size); 46 + #pragma GCC diagnostic pop 47 + } 48 + 36 49 struct bpf_program * __weak 37 50 bpf_object__next_program(const struct bpf_object *obj, struct bpf_program *prev) 38 51 {