On Sun, Jan 1, 2023 at 12:34 AM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > Happy New Year! > > This is part 2 of https://lore.kernel.org/bpf/20221018135920.726360-1-memxor@xxxxxxxxx. > > Changelog: > ---------- > Old v1 -> v1 > Old v1: https://lore.kernel.org/bpf/20221018135920.726360-1-memxor@xxxxxxxxx > > * Allow overwriting dynptr stack slots from dynptr init helpers > * Fix a bug in alignment check where reg->var_off.value was still not included > * Address other minor nits > > Kumar Kartikeya Dwivedi (8): > bpf: Fix state pruning for STACK_DYNPTR stack slots > bpf: Fix missing var_off check for ARG_PTR_TO_DYNPTR > bpf: Fix partial dynptr stack slot reads/writes > bpf: Allow reinitializing unreferenced dynptr stack slots > selftests/bpf: Add dynptr pruning tests > selftests/bpf: Add dynptr var_off tests > selftests/bpf: Add dynptr partial slot overwrite tests > selftests/bpf: Add dynptr helper tests > Hey Kumar, thanks for fixes! Left few comments, but I was also wondering if you thought about current is_spilled_reg() usage in the code? It makes an assumption that stack slots can be either a scalar (MISC/ZERO/INVALID) or STACK_SPILL. With STACK_DYNPTR it's not the case anymore, so it feels like we need to audit all the places where we assume stack spill and see if anything should be fixed. Was just wondering if you already looked at this? > kernel/bpf/verifier.c | 243 ++++++++++++++++-- > .../bpf/prog_tests/kfunc_dynptr_param.c | 2 +- > .../testing/selftests/bpf/progs/dynptr_fail.c | 68 ++++- > tools/testing/selftests/bpf/verifier/dynptr.c | 182 +++++++++++++ > 4 files changed, 464 insertions(+), 31 deletions(-) > create mode 100644 tools/testing/selftests/bpf/verifier/dynptr.c > > > base-commit: bb5747cfbc4b7fe29621ca6cd4a695d2723bf2e8 > -- > 2.39.0 >