> On Sun, 2022-06-19 at 16:37 -0700, Alexei Starovoitov wrote: > On Sun, Jun 19, 2022 at 3:01 PM Eduard Zingerman <eddyz87@xxxxxxxxx> wrote: > > > > /* Mark a register as having a completely unknown (scalar) value. */ > > static void __mark_reg_unknown(const struct bpf_verifier_env *env, > > struct bpf_reg_state *reg) > > { > > ... > > reg->precise = env->subprog_cnt > 1 || !env->bpf_capable; > > Ahh. Thanks for explaining. > We probably need to fix this conservative logic. > Can you repro the issue when you comment out above ? If I replace the assignment above with `reg->precise = false` the verifier does skip the second branch with BPF_REG_4 set to 1. > Let's skip the test for now. Just add mark_chain_precision > to loop logic, so we don't have to come back to it later > when subprogs>1 is fixed. Will provide the updated version tonight, thank you for the suggestions. Best regards, Eduard.