On Thu, Apr 6, 2023 at 3:13 PM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > +1 > All of the DYNPTR_TYPE_FLAG_MASK flags cannot appear in type == reg->type > here. > They are either dynamic flags inside bpf_dynptr_kern->size > or in arg_type. > Like in bpf_dynptr_from_mem_proto. Looking at this a bit more, I believe this is to enforce packet restrictions for DYNPTR_TYPE_SKB and DYNPTR_TYPE_XDP. When a helper function alters a packet, dynptr slices of it are invalidated. If I remove that annotation entirely, then the invalid_data_slice family of tests fail. bpf_dynptr_from_mem_proto is fine since that's just local dynptrs, which don't have any extra limitations.