On Sat, Dec 18, 2021 at 7:01 PM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > On Sun, Dec 19, 2021 at 07:52:48AM IST, Alexei Starovoitov wrote: > > On Fri, Dec 17, 2021 at 07:20:26AM +0530, Kumar Kartikeya Dwivedi wrote: > > > > > > diff --git a/include/linux/bpf.h b/include/linux/bpf.h > > > index 965fffaf0308..015cb633838b 100644 > > > --- a/include/linux/bpf.h > > > +++ b/include/linux/bpf.h > > > @@ -521,6 +521,9 @@ struct bpf_verifier_ops { > > > enum bpf_access_type atype, > > > u32 *next_btf_id); > > > bool (*check_kfunc_call)(u32 kfunc_btf_id, struct module *owner); > > > + bool (*is_acquire_kfunc)(u32 kfunc_btf_id, struct module *owner); > > > + bool (*is_release_kfunc)(u32 kfunc_btf_id, struct module *owner); > > > + bool (*is_kfunc_ret_type_null)(u32 kfunc_btf_id, struct module *owner); > > > > Same feedback as before... > > > > Those callbacks are not necessary. > > The existing check_kfunc_call() is just as inconvenient. > > When module's BTF comes in could you add it to mod's info instead of > > introducing callbacks for every kind of data the module has. > > Those callbacks don't server any purpose other than passing the particular > > data set back. The verifier side should access those data sets directly. > > Ok, interesting idea. So these then go into the ".modinfo" section? It doesn't need to be a special section. The btf_module_notify() parses BTF. At the same time it can add a kfunc whitelist to "struct module". The btf_ids[ACQUIRE/RELEASE][] arrays will be a part of the "struct module" too. If we can do a btf name convention then this job can be performed generically by btf_module_notify(). Otherwise __init of the module can populate arrays in "struct module". > I think then > we can also drop the check_kfunc_call callback? Right. Would be great to remove that callback too.