On Fri, Oct 21, 2022 at 4:04 PM Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > > On Thu, Oct 20, 2022 at 9:07 AM Dave Marchevsky <davemarchevsky@xxxxxx> wrote: > > > > After the previous patch, which added PTR_TO_MEM | MEM_ALLOC type > > map_key_value_types, the only difference between map_key_value_types and > > mem_types sets is PTR_TO_BUF and PTR_TO_MEM, which are in the latter set > > but not the former. > > > > Helpers which expect ARG_PTR_TO_MAP_KEY or ARG_PTR_TO_MAP_VALUE > > already effectively expect a valid blob of arbitrary memory that isn't > > necessarily explicitly associated with a map. When validating a > > PTR_TO_MAP_{KEY,VALUE} arg, the verifier expects meta->map_ptr to have > > already been set, either by an earlier ARG_CONST_MAP_PTR arg, or custom > > logic like that in process_timer_func or process_kptr_func. > > > > So let's get rid of map_key_value_types and just use mem_types for those > > args. > > > > This has the effect of adding PTR_TO_BUF and PTR_TO_MEM to the set of > > compatible types for ARG_PTR_TO_MAP_KEY and ARG_PTR_TO_MAP_VALUE. > > > > PTR_TO_BUF is used by various bpf_iter implementations to represent a > > chunk of valid r/w memory in ctx args for iter prog. > > > > PTR_TO_MEM is used by networking, tracing, and ringbuf helpers to > > represent a chunk of valid memory. The PTR_TO_MEM | MEM_ALLOC > > type added in previous commmit is specific to ringbuf helpers. > > typo: s/commmit/commit/ (but not worth reposting just to fix this) Patched it up while applying.