On Thu, 19 Jan 2023 at 19:43, Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > We take the BTF reference before we register dtors and we need > to put it back when it's done. > > We probably won't se a problem with kernel BTF, but module BTF > would stay loaded (because of the extra ref) even when its module > is removed. > > Cc: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> > Fixes: 5ce937d613a4 ("bpf: Populate pairs of btf_id and destructor kfunc in btf") > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > --- Thanks for the fix. Acked-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> > kernel/bpf/btf.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c > index f7dd8af06413..b7017cae6fd1 100644 > --- a/kernel/bpf/btf.c > +++ b/kernel/bpf/btf.c > @@ -7782,9 +7782,9 @@ int register_btf_id_dtor_kfuncs(const struct btf_id_dtor_kfunc *dtors, u32 add_c > > sort(tab->dtors, tab->cnt, sizeof(tab->dtors[0]), btf_id_cmp_func, NULL); > > - return 0; > end: > - btf_free_dtor_kfunc_tab(btf); > + if (ret) > + btf_free_dtor_kfunc_tab(btf); > btf_put(btf); > return ret; > } > -- > 2.39.0 >