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

libbpf: Migrate internal use of bpf_program__get_prog_info_linear

In preparation for bpf_program__get_prog_info_linear deprecation, move
the single use in libbpf to call bpf_obj_get_info_by_fd directly.

Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211011082031.4148337-2-davemarchevsky@fb.com

authored by

Dave Marchevsky and committed by
Andrii Nakryiko
ebc7b50a 588cd7ef

+10 -12
+10 -12
tools/lib/bpf/libbpf.c
··· 8461 8461 8462 8462 static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd) 8463 8463 { 8464 - struct bpf_prog_info_linear *info_linear; 8465 - struct bpf_prog_info *info; 8464 + struct bpf_prog_info info = {}; 8465 + __u32 info_len = sizeof(info); 8466 8466 struct btf *btf; 8467 8467 int err; 8468 8468 8469 - info_linear = bpf_program__get_prog_info_linear(attach_prog_fd, 0); 8470 - err = libbpf_get_error(info_linear); 8469 + err = bpf_obj_get_info_by_fd(attach_prog_fd, &info, &info_len); 8471 8470 if (err) { 8472 - pr_warn("failed get_prog_info_linear for FD %d\n", 8473 - attach_prog_fd); 8471 + pr_warn("failed bpf_obj_get_info_by_fd for FD %d: %d\n", 8472 + attach_prog_fd, err); 8474 8473 return err; 8475 8474 } 8476 8475 8477 8476 err = -EINVAL; 8478 - info = &info_linear->info; 8479 - if (!info->btf_id) { 8477 + if (!info.btf_id) { 8480 8478 pr_warn("The target program doesn't have BTF\n"); 8481 8479 goto out; 8482 8480 } 8483 - btf = btf__load_from_kernel_by_id(info->btf_id); 8484 - if (libbpf_get_error(btf)) { 8485 - pr_warn("Failed to get BTF of the program\n"); 8481 + btf = btf__load_from_kernel_by_id(info.btf_id); 8482 + err = libbpf_get_error(btf); 8483 + if (err) { 8484 + pr_warn("Failed to get BTF %d of the program: %d\n", info.btf_id, err); 8486 8485 goto out; 8487 8486 } 8488 8487 err = btf__find_by_name_kind(btf, name, BTF_KIND_FUNC); ··· 8491 8492 goto out; 8492 8493 } 8493 8494 out: 8494 - free(info_linear); 8495 8495 return err; 8496 8496 } 8497 8497