diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index e421ea2b80c3..d8df29ac7dac 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -10886,6 +10886,10 @@ static int check_helper_call(struct bpf_verifier_env *env, struct bpf_insn *insn break; case BPF_FUNC_loop: update_loop_inline_state(env, meta.subprogno); + if (cur_regs(env)[BPF_REG_1].type != SCALAR_VALUE) { + verbose(env, "R1 must be a scalar for bpf_loop\n"); + return -EINVAL; + } /* Verifier relies on R1 value to determine if bpf_loop() iteration * is finished, thus mark it precise. */