diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 1f8bf2b39d506165e32c27b17b46f265136be87f..36bc34fce623cdfce3e94ad42631f0681b6fe0e1 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -3356,6 +3356,8 @@ static int check_max_stack_depth(struct bpf_verifier_env *env) if (tail_call_reachable) for (j = 0; j < frame; j++) subprog[ret_prog[j]].tail_call_reachable = true; + if (subprog[0].tail_call_reachable) + env->prog->aux->tail_call_reachable = true; /* end of for() loop means the last insn of the 'subprog' * was reached. Doesn't matter whether it was JA or EXIT