diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 5c11b782f..ab1f20357 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -7559,8 +7559,12 @@ static int visit_func_call_insn(int t, int insn_cnt, init_explored_state(env, t + 1); if (visit_callee) { init_explored_state(env, t); - ret = push_insn(t, t + insns[t].imm + 1, BRANCH, - env, false); + ret = push_insn(t, t + insns[t].imm + 1, BRANCH, env, + /* It's ok to allow recursion from CFG point of + * view. __check_func_call() will do the actual + * check. + */ + bpf_pseudo_func(insns + t)); } return ret; }