diff options
| author | Alexei Starovoitov <ast@kernel.org> | 2021-12-01 10:10:24 -0800 | 
|---|---|---|
| committer | Andrii Nakryiko <andrii@kernel.org> | 2021-12-02 11:18:34 -0800 | 
| commit | 74753e1462e77349525daf9eb60ea21ed92d3a97 (patch) | |
| tree | d467116b4c48106e4bd0cbaa04e6df823bcc2720 /tools/lib/bpf/relo_core.c | |
| parent | 64b5b97b8cfff64409fcc234ae3151bc8de0c4d6 (diff) | |
libbpf: Replace btf__type_by_id() with btf_type_by_id().
To prepare relo_core.c to be compiled in the kernel and the user space
replace btf__type_by_id with btf_type_by_id.
In libbpf btf__type_by_id and btf_type_by_id have different behavior.
bpf_core_apply_relo_insn() needs behavior of uapi btf__type_by_id
vs internal btf_type_by_id, but type_id range check is already done
in bpf_core_apply_relo(), so it's safe to replace it everywhere.
The kernel btf_type_by_id() does the check anyway. It doesn't hurt.
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211201181040.23337-2-alexei.starovoitov@gmail.com
Diffstat (limited to 'tools/lib/bpf/relo_core.c')
| -rw-r--r-- | tools/lib/bpf/relo_core.c | 19 | 
1 files changed, 8 insertions, 11 deletions
| diff --git a/tools/lib/bpf/relo_core.c b/tools/lib/bpf/relo_core.c index b5b8956a1be8..c0904f4cb514 100644 --- a/tools/lib/bpf/relo_core.c +++ b/tools/lib/bpf/relo_core.c @@ -51,7 +51,7 @@ static bool is_flex_arr(const struct btf *btf,  		return false;  	/* has to be the last member of enclosing struct */ -	t = btf__type_by_id(btf, acc->type_id); +	t = btf_type_by_id(btf, acc->type_id);  	return acc->idx == btf_vlen(t) - 1;  } @@ -388,7 +388,7 @@ static int bpf_core_match_member(const struct btf *local_btf,  		return 0;  	local_id = local_acc->type_id; -	local_type = btf__type_by_id(local_btf, local_id); +	local_type = btf_type_by_id(local_btf, local_id);  	local_member = btf_members(local_type) + local_acc->idx;  	local_name = btf__name_by_offset(local_btf, local_member->name_off); @@ -580,7 +580,7 @@ static int bpf_core_calc_field_relo(const char *prog_name,  		return -EUCLEAN; /* request instruction poisoning */  	acc = &spec->spec[spec->len - 1]; -	t = btf__type_by_id(spec->btf, acc->type_id); +	t = btf_type_by_id(spec->btf, acc->type_id);  	/* a[n] accessor needs special handling */  	if (!acc->name) { @@ -729,7 +729,7 @@ static int bpf_core_calc_enumval_relo(const struct bpf_core_relo *relo,  	case BPF_ENUMVAL_VALUE:  		if (!spec)  			return -EUCLEAN; /* request instruction poisoning */ -		t = btf__type_by_id(spec->btf, spec->spec[0].type_id); +		t = btf_type_by_id(spec->btf, spec->spec[0].type_id);  		e = btf_enum(t) + spec->spec[0].idx;  		*val = e->val;  		break; @@ -805,8 +805,8 @@ static int bpf_core_calc_relo(const char *prog_name,  		if (res->orig_sz != res->new_sz) {  			const struct btf_type *orig_t, *new_t; -			orig_t = btf__type_by_id(local_spec->btf, res->orig_type_id); -			new_t = btf__type_by_id(targ_spec->btf, res->new_type_id); +			orig_t = btf_type_by_id(local_spec->btf, res->orig_type_id); +			new_t = btf_type_by_id(targ_spec->btf, res->new_type_id);  			/* There are two use cases in which it's safe to  			 * adjust load/store's mem size: @@ -1054,7 +1054,7 @@ static void bpf_core_dump_spec(int level, const struct bpf_core_spec *spec)  	int i;  	type_id = spec->root_type_id; -	t = btf__type_by_id(spec->btf, type_id); +	t = btf_type_by_id(spec->btf, type_id);  	s = btf__name_by_offset(spec->btf, t->name_off);  	libbpf_print(level, "[%u] %s %s", type_id, btf_kind_str(t), str_is_empty(s) ? "<anon>" : s); @@ -1158,10 +1158,7 @@ int bpf_core_apply_relo_insn(const char *prog_name, struct bpf_insn *insn,  	int i, j, err;  	local_id = relo->type_id; -	local_type = btf__type_by_id(local_btf, local_id); -	if (!local_type) -		return -EINVAL; - +	local_type = btf_type_by_id(local_btf, local_id);  	local_name = btf__name_by_offset(local_btf, local_type->name_off);  	if (!local_name)  		return -EINVAL; | 
