Skip to content

Commit eafdff3

Browse files
seehearfeelKernel Patches Daemon
authored and
Kernel Patches Daemon
committed
bpf: Return -ENOTSUPP if callbacks are not allowed in non-JITed programs
If CONFIG_BPF_JIT_ALWAYS_ON is not set and bpf_jit_enable is 0, there exist 6 failed tests. [root@linux bpf]# echo 0 > /proc/sys/net/core/bpf_jit_enable [root@linux bpf]# ./test_verifier | grep FAIL #107/p inline simple bpf_loop call FAIL #108/p don't inline bpf_loop call, flags non-zero FAIL #109/p don't inline bpf_loop call, callback non-constant FAIL #110/p bpf_loop_inline and a dead func FAIL #111/p bpf_loop_inline stack locations for loop vars FAIL #112/p inline bpf_loop call in a big program FAIL Summary: 505 PASSED, 266 SKIPPED, 6 FAILED The test log shows that callbacks are not allowed in non-JITed programs, interpreter doesn't support them yet, thus these tests should be skipped if jit is disabled, just return -ENOTSUPP instead of -EINVAL for pseudo calls in fixup_call_args(). With this patch: [root@linux bpf]# echo 0 > /proc/sys/net/core/bpf_jit_enable [root@linux bpf]# ./test_verifier | grep FAIL Summary: 505 PASSED, 272 SKIPPED, 0 FAILED Signed-off-by: Tiezhu Yang <[email protected]>
1 parent 7218e7b commit eafdff3

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

kernel/bpf/verifier.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19067,7 +19067,7 @@ static int fixup_call_args(struct bpf_verifier_env *env)
1906719067
* have to be rejected, since interpreter doesn't support them yet.
1906819068
*/
1906919069
verbose(env, "callbacks are not allowed in non-JITed programs\n");
19070-
return -EINVAL;
19070+
return -ENOTSUPP;
1907119071
}
1907219072

1907319073
if (!bpf_pseudo_call(insn))

0 commit comments

Comments
 (0)