forked from Minki/linux
tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id()
Replace the calls to function btf__get_from_id(), which we plan to deprecate before the library reaches v1.0, with calls to btf__load_from_kernel_by_id() in tools/ (bpftool, perf, selftests). Update the surrounding code accordingly (instead of passing a pointer to the btf struct, get it as a return value from the function). Signed-off-by: Quentin Monnet <quentin@isovalent.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: John Fastabend <john.fastabend@gmail.com> Link: https://lore.kernel.org/bpf/20210729162028.29512-6-quentin@isovalent.com
This commit is contained in:
parent
369e955b3d
commit
86f4b7f257
@ -580,16 +580,12 @@ static int do_dump(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (!btf) {
|
||||
err = btf__get_from_id(btf_id, &btf);
|
||||
btf = btf__load_from_kernel_by_id(btf_id);
|
||||
err = libbpf_get_error(btf);
|
||||
if (err) {
|
||||
p_err("get btf by id (%u): %s", btf_id, strerror(err));
|
||||
goto done;
|
||||
}
|
||||
if (!btf) {
|
||||
err = -ENOENT;
|
||||
p_err("can't find btf with ID (%u)", btf_id);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
if (dump_c) {
|
||||
|
@ -64,8 +64,10 @@ static int dump_prog_id_as_func_ptr(const struct btf_dumper *d,
|
||||
}
|
||||
info = &prog_info->info;
|
||||
|
||||
if (!info->btf_id || !info->nr_func_info ||
|
||||
btf__get_from_id(info->btf_id, &prog_btf))
|
||||
if (!info->btf_id || !info->nr_func_info)
|
||||
goto print;
|
||||
prog_btf = btf__load_from_kernel_by_id(info->btf_id);
|
||||
if (libbpf_get_error(prog_btf))
|
||||
goto print;
|
||||
finfo = u64_to_ptr(info->func_info);
|
||||
func_type = btf__type_by_id(prog_btf, finfo->type_id);
|
||||
|
@ -807,10 +807,11 @@ static struct btf *get_map_kv_btf(const struct bpf_map_info *info)
|
||||
} else if (info->btf_value_type_id) {
|
||||
int err;
|
||||
|
||||
err = btf__get_from_id(info->btf_id, &btf);
|
||||
if (err || !btf) {
|
||||
btf = btf__load_from_kernel_by_id(info->btf_id);
|
||||
err = libbpf_get_error(btf);
|
||||
if (err) {
|
||||
p_err("failed to get btf");
|
||||
btf = err ? ERR_PTR(err) : ERR_PTR(-ESRCH);
|
||||
btf = ERR_PTR(err);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1039,11 +1040,10 @@ static void print_key_value(struct bpf_map_info *info, void *key,
|
||||
void *value)
|
||||
{
|
||||
json_writer_t *btf_wtr;
|
||||
struct btf *btf = NULL;
|
||||
int err;
|
||||
struct btf *btf;
|
||||
|
||||
err = btf__get_from_id(info->btf_id, &btf);
|
||||
if (err) {
|
||||
btf = btf__load_from_kernel_by_id(info->btf_id);
|
||||
if (libbpf_get_error(btf)) {
|
||||
p_err("failed to get btf");
|
||||
return;
|
||||
}
|
||||
|
@ -249,10 +249,10 @@ static void show_prog_metadata(int fd, __u32 num_maps)
|
||||
struct bpf_map_info map_info;
|
||||
struct btf_var_secinfo *vsi;
|
||||
bool printed_header = false;
|
||||
struct btf *btf = NULL;
|
||||
unsigned int i, vlen;
|
||||
void *value = NULL;
|
||||
const char *name;
|
||||
struct btf *btf;
|
||||
int err;
|
||||
|
||||
if (!num_maps)
|
||||
@ -263,8 +263,8 @@ static void show_prog_metadata(int fd, __u32 num_maps)
|
||||
if (!value)
|
||||
return;
|
||||
|
||||
err = btf__get_from_id(map_info.btf_id, &btf);
|
||||
if (err || !btf)
|
||||
btf = btf__load_from_kernel_by_id(map_info.btf_id);
|
||||
if (libbpf_get_error(btf))
|
||||
goto out_free;
|
||||
|
||||
t_datasec = btf__type_by_id(btf, map_info.btf_value_type_id);
|
||||
@ -646,9 +646,12 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode,
|
||||
member_len = info->xlated_prog_len;
|
||||
}
|
||||
|
||||
if (info->btf_id && btf__get_from_id(info->btf_id, &btf)) {
|
||||
p_err("failed to get btf");
|
||||
return -1;
|
||||
if (info->btf_id) {
|
||||
btf = btf__load_from_kernel_by_id(info->btf_id);
|
||||
if (libbpf_get_error(btf)) {
|
||||
p_err("failed to get btf");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
func_info = u64_to_ptr(info->func_info);
|
||||
@ -2014,12 +2017,17 @@ static char *profile_target_name(int tgt_fd)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (info_linear->info.btf_id == 0 ||
|
||||
btf__get_from_id(info_linear->info.btf_id, &btf)) {
|
||||
if (info_linear->info.btf_id == 0) {
|
||||
p_err("prog FD %d doesn't have valid btf", tgt_fd);
|
||||
goto out;
|
||||
}
|
||||
|
||||
btf = btf__load_from_kernel_by_id(info_linear->info.btf_id);
|
||||
if (libbpf_get_error(btf)) {
|
||||
p_err("failed to load btf for prog FD %d", tgt_fd);
|
||||
goto out;
|
||||
}
|
||||
|
||||
func_info = u64_to_ptr(info_linear->info.func_info);
|
||||
t = btf__type_by_id(btf, func_info[0].type_id);
|
||||
if (!t) {
|
||||
|
@ -223,10 +223,10 @@ static int perf_event__synthesize_one_bpf_prog(struct perf_session *session,
|
||||
free(info_linear);
|
||||
return -1;
|
||||
}
|
||||
if (btf__get_from_id(info->btf_id, &btf)) {
|
||||
btf = btf__load_from_kernel_by_id(info->btf_id);
|
||||
if (libbpf_get_error(btf)) {
|
||||
pr_debug("%s: failed to get BTF of id %u, aborting\n", __func__, info->btf_id);
|
||||
err = -1;
|
||||
btf = NULL;
|
||||
goto out;
|
||||
}
|
||||
perf_env__fetch_btf(env, info->btf_id, btf);
|
||||
@ -478,7 +478,8 @@ static void perf_env__add_bpf_info(struct perf_env *env, u32 id)
|
||||
if (btf_id == 0)
|
||||
goto out;
|
||||
|
||||
if (btf__get_from_id(btf_id, &btf)) {
|
||||
btf = btf__load_from_kernel_by_id(btf_id);
|
||||
if (libbpf_get_error(btf)) {
|
||||
pr_debug("%s: failed to get BTF of id %u, aborting\n",
|
||||
__func__, btf_id);
|
||||
goto out;
|
||||
|
@ -74,12 +74,17 @@ static char *bpf_target_prog_name(int tgt_fd)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (info_linear->info.btf_id == 0 ||
|
||||
btf__get_from_id(info_linear->info.btf_id, &btf)) {
|
||||
if (info_linear->info.btf_id == 0) {
|
||||
pr_debug("prog FD %d doesn't have valid btf\n", tgt_fd);
|
||||
goto out;
|
||||
}
|
||||
|
||||
btf = btf__load_from_kernel_by_id(info_linear->info.btf_id);
|
||||
if (libbpf_get_error(btf)) {
|
||||
pr_debug("failed to load btf for prog FD %d\n", tgt_fd);
|
||||
goto out;
|
||||
}
|
||||
|
||||
func_info = u64_to_ptr(info_linear->info.func_info);
|
||||
t = btf__type_by_id(btf, func_info[0].type_id);
|
||||
if (!t) {
|
||||
|
@ -4350,7 +4350,8 @@ static void do_test_file(unsigned int test_num)
|
||||
goto done;
|
||||
}
|
||||
|
||||
err = btf__get_from_id(info.btf_id, &btf);
|
||||
btf = btf__load_from_kernel_by_id(info.btf_id);
|
||||
err = libbpf_get_error(btf);
|
||||
if (CHECK(err, "cannot get btf from kernel, err: %d", err))
|
||||
goto done;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user