On Fri, 15 Dec 2023 at 15:58:22 -0800, Andrii Nakryiko wrote: > It is safe to always start with imprecise SCALAR_VALUE register. > Previously __mark_reg_const_zero() relied on caller to reset precise > mark, but it's very error prone and we already missed it in a few > places. So instead make __mark_reg_const_zero() reset precision always, > as it's a safe default for SCALAR_VALUE. Explanation is basically the > same as for why we are resetting (or rather not setting) precision in > current state. If necessary, precision propagation will set it to > precise correctly. > > As such, also remove a big comment about forward precision propagation > in mark_reg_stack_read() and avoid unnecessarily setting precision to > true after reading from STACK_ZERO stack. Again, precision propagation > will correctly handle this, if that SCALAR_VALUE register will ever be > needed to be precise. > > Reported-by: Maxim Mikityanskiy <maxtram95@xxxxxxxxx> > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > --- > kernel/bpf/verifier.c | 16 +++------------- > .../selftests/bpf/progs/verifier_spill_fill.c | 10 ++++++++-- > 2 files changed, 11 insertions(+), 15 deletions(-) Thanks for the prompt fix! Acked-by: Maxim Mikityanskiy <maxtram95@xxxxxxxxx>