On Thu, 2023-11-16 at 09:08 -0500, Andrii Nakryiko wrote: [...] > > @@ -10479,8 +10481,14 @@ 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); > > - err = push_callback_call(env, insn, insn_idx, meta.subprogno, > > - set_loop_callback_state); > > + if (env->log.level & BPF_LOG_LEVEL2) > > + verbose(env, "frame%d callback_depth=%u\n", > > + env->cur_state->curframe, cur_func(env)->callback_depth); > > + if (cur_func(env)->callback_depth < regs[BPF_REG_1].umax_value) > > I haven't had time to look at the patch set properly yet and I'm not > sure if I'll have time today. But one thing that I randomly realized > is that if you are taking umax_value into account then this BPF_REG_1 > has to be precise, so please make sure to mark_chain_precision() on it > first. Yes, makes sense, thank you for spotting this. Will update in v2, waiting for some more feedback before resending.