Re: [PATCH 0/3] Dynptr Verifier Adjustments

From: Andrii Nakryiko
Date: Thu Apr 06 2023 - 16:50:31 EST


On Wed, Apr 5, 2023 at 5:40 PM Daniel Rosenberg <drosen@xxxxxxxxxx> wrote:
>
> These patches relax a few verifier requirements around dynptrs.
>
> I was unable to test the patch in 0003 due to unrelated issues compiling the
> bpf selftests, but did run an equivalent local test program.
>
> This is the issue I was running into:
> progs/cgrp_ls_attach_cgroup.c:17:15: error: use of undeclared identifier 'BPF_MAP_TYPE_CGRP_STORAGE'; did you mean 'BPF_MAP_TYPE_CGROUP_STORAGE'?
> __uint(type, BPF_MAP_TYPE_CGRP_STORAGE);
> ^~~~~~~~~~~~~~~~~~~~~~~~~
> BPF_MAP_TYPE_CGROUP_STORAGE
> /ssd/kernel/fuse-bpf/tools/testing/selftests/bpf/tools/include/bpf/bpf_helpers.h:13:39: note: expanded from macro '__uint'
> #define __uint(name, val) int (*name)[val]
> ^
> /ssd/kernel/fuse-bpf/tools/testing/selftests/bpf/tools/include/vmlinux.h:27892:2: note: 'BPF_MAP_TYPE_CGROUP_STORAGE' declared here
> BPF_MAP_TYPE_CGROUP_STORAGE = 19,
> ^
> 1 error generated.

It is expected that you build the freshest vmlinux image before
building selftests, because we generate vmlinux.h from it. In your
case we generated vmlinux.h from your system-wide
/sys/kernel/btf/vmlinux BTF information, which doesn't yet have latest
UAPI enums.

>
> Daniel Rosenberg (3):
> bpf: verifier: Accept dynptr mem as mem in helpers
> bpf: Allow NULL buffers in bpf_dynptr_slice(_rw)
> selftests/bpf: Test allowing NULL buffer in dynptr slice
>
> Documentation/bpf/kfuncs.rst | 23 ++++++++++++-
> kernel/bpf/helpers.c | 32 ++++++++++++-------
> kernel/bpf/verifier.c | 21 ++++++++++++
> .../testing/selftests/bpf/prog_tests/dynptr.c | 1 +
> .../selftests/bpf/progs/dynptr_success.c | 21 ++++++++++++
> 5 files changed, 85 insertions(+), 13 deletions(-)
>
>
> base-commit: 5af607a861d43ffff830fc1890033e579ec44799
> --
> 2.40.0.577.gac1e443424-goog
>