mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
libbpf: Support BTF_KIND_FLOAT during type compatibility checks in CO-RE
Add BTF_KIND_FLOAT support when doing CO-RE field type compatibility check.
Without this, relocations against float/double fields will fail.
Also adjust one error message to emit instruction index instead of less
convenient instruction byte offset.
Fixes: 22541a9eeb
("libbpf: Add BTF_KIND_FLOAT support")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Lorenz Bauer <lmb@cloudflare.com>
Link: https://lore.kernel.org/bpf/20210426192949.416837-3-andrii@kernel.org
This commit is contained in:
parent
7a2fa70aaf
commit
6709a914c8
@ -5115,6 +5115,7 @@ err_out:
|
||||
* least one of enums should be anonymous;
|
||||
* - for ENUMs, check sizes, names are ignored;
|
||||
* - for INT, size and signedness are ignored;
|
||||
* - any two FLOATs are always compatible;
|
||||
* - for ARRAY, dimensionality is ignored, element types are checked for
|
||||
* compatibility recursively;
|
||||
* - everything else shouldn't be ever a target of relocation.
|
||||
@ -5141,6 +5142,7 @@ recur:
|
||||
|
||||
switch (btf_kind(local_type)) {
|
||||
case BTF_KIND_PTR:
|
||||
case BTF_KIND_FLOAT:
|
||||
return 1;
|
||||
case BTF_KIND_FWD:
|
||||
case BTF_KIND_ENUM: {
|
||||
@ -6245,8 +6247,8 @@ patch_insn:
|
||||
/* bpf_core_patch_insn() should know how to handle missing targ_spec */
|
||||
err = bpf_core_patch_insn(prog, relo, relo_idx, &targ_res);
|
||||
if (err) {
|
||||
pr_warn("prog '%s': relo #%d: failed to patch insn at offset %d: %d\n",
|
||||
prog->name, relo_idx, relo->insn_off, err);
|
||||
pr_warn("prog '%s': relo #%d: failed to patch insn #%zu: %d\n",
|
||||
prog->name, relo_idx, relo->insn_off / BPF_INSN_SZ, err);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user