On Thu, Oct 13, 2022 at 11:52:57AM +0530, Kumar Kartikeya Dwivedi wrote: > +void *bpf_kptr_new_impl(u64 local_type_id__k, u64 flags, void *meta__ign) > +{ > + struct btf_struct_meta *meta = meta__ign; > + u64 size = local_type_id__k; > + void *p; > + > + if (unlikely(flags || !bpf_global_ma_set)) > + return NULL; Unused 'flags' looks weird in unstable api. Just drop it? And keep it as: void *bpf_kptr_new(u64 local_type_id__k, struct btf_struct_meta *meta__ign); and in bpf_experimental.h: extern void *bpf_kptr_new(__u64 local_type_id) __ksym; since __ign args are ignored during kfunc type match the bpf progs can use it without #define. > + p = bpf_mem_alloc(&bpf_global_ma, size); > + if (!p) > + return NULL; > + if (meta) > + bpf_obj_init(meta->off_arr, p); I'm starting to dislike all that _arr and _tab suffixes in the verifier code base. It reminds me of programming style where people tried to add types into variable names. imo dropping _arr wouldn't be just fine.