On Fri, Jul 26, 2019 at 3:18 PM Joel Fernandes <joel@xxxxxxxxxxxxxxxxx> wrote: > > On Fri, Jul 26, 2019 at 11:39:56AM -0700, Alexei Starovoitov wrote: [snip] > > > For bpf program: > > > https://android.googlesource.com/platform/system/bpfprogs/+/908f6cd718fab0de7a944f84628c56f292efeb17%5E%21/ > > > > what is unsafe_bpf_map_update_elem() in there? > > The verifier comment sounds odd. > > Could you describe the issue you see with the verifier? > > Will dig out the verifier issue I was seeing. I was just trying to get a > prototype working so I did not go into verifier details much. This is actually slightly old code, the actual function name is bpf_map_update_elem_unsafe() . https://android.googlesource.com/platform/system/bpf/+/refs/heads/master/progs/include/bpf_helpers.h#39 This function came about because someone added a DEFINE_BPF_MAP macro which defines BPF map accessors based on the type of the key and value. So that's the "safe" variant: https://android.googlesource.com/platform/system/bpf/+/refs/heads/master/progs/include/bpf_helpers.h#54 (added in commit https://android.googlesource.com/platform/system/bpf/+/6564b8eac46fc27dde807a39856386d98d2471c3) So the "safe" variant of the bpf_map_update_elem for us became a map specific version with a prototype: static inline __always_inline __unused int bpf_##the_map##_update_elem(TypeOfKey* k, TypeOfValue* v, unsigned long long flags) Since I had not upgraded my BPF program to the "safe" variant, I had to use the internal "unsafe" variant of the API (if that makes sense..). thanks Alexei! - Joel