You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bpf: verifier: Fix return value of fixup_call_args
Run bloom_filter_map selftests (./test_progs -t bloom_filter_map) on a
Loongarch platform, an error message "JIT doesn't support bpf-to-bpf calls"
is got in user space, together with an unexpected errno EINVAL (22), not
ENOTSUPP (524):
libbpf: prog 'inner_map': BPF program load failed: Invalid argument
libbpf: prog 'inner_map': -- BEGIN PROG LOAD LOG --
JIT doesn't support bpf-to-bpf calls
callbacks are not allowed in non-JITed programs
processed 37 insns (limit 1000000) max_states_per_insn 1 total_states
-- END PROG LOAD LOG --
libbpf: prog 'inner_map': failed to load: -22
libbpf: failed to load object 'bloom_filter_map'
libbpf: failed to load BPF skeleton 'bloom_filter_map': -22
setup_progs:FAIL:bloom_filter_map__open_and_load unexpected error: -22
#16 bloom_filter_map:FAIL
Although the return value of jit_subprogs() does be set as "ENOTSUPP":
verbose(env, "JIT doesn't support bpf-to-bpf calls\n");
err = -ENOTSUPP;
goto out_free;
But afterwards in fixup_call_args(), the return value of jit_subprogs()
is ignored, and overwritten as "-EINVAL":
verbose(env, "callbacks are not allowed in non-JITed programs\n");
return -EINVAL;
This patch fixes this by changing return values of fixup_call_args() from
"-EINVAL" to "err ?: -EINVAL". With this change, errno 524 is got in user
space now:
libbpf: prog 'inner_map': BPF program load failed: unknown error (-524)
libbpf: prog 'inner_map': -- BEGIN PROG LOAD LOG --
JIT doesn't support bpf-to-bpf calls
processed 37 insns (limit 1000000) max_states_per_insn 1 total_states
-- END PROG LOAD LOG --
libbpf: prog 'inner_map': failed to load: -524
libbpf: failed to load object 'bloom_filter_map'
libbpf: failed to load BPF skeleton 'bloom_filter_map': -524
setup_progs:FAIL:bloom_filter_map__open_and_load unexpected error: -524
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
0 commit comments