On Thu, Dec 20, 2018 at 10:29:00AM -0800, Song Liu wrote: > +static void perf_event_bpf_emit_ksymbols(struct bpf_prog *prog, > + enum perf_bpf_event_type type) > +{ > + bool unregister = type == PERF_BPF_EVENT_PROG_UNLOAD; > + int i; > + > + if (prog->aux->func_cnt == 0) { > + perf_event_ksymbol(PERF_RECORD_MISC_KSYMBOL_TYPE_BPF, > + (u64)(unsigned long)prog->bpf_func, > + prog->jited_len, unregister, > + perf_event_bpf_get_name, prog); > + } else { > + for (i = 0; i < prog->aux->func_cnt; i++) { > + struct bpf_prog *subprog = prog->aux->func[i]; > + > + perf_event_ksymbol( > + PERF_RECORD_MISC_KSYMBOL_TYPE_BPF, > + (u64)(unsigned long)subprog->bpf_func, > + subprog->jited_len, unregister, > + perf_event_bpf_get_name, subprog); > + } > + } > +}
That's a bit unexpected, but yes sure, that works for now. I was expecting it to be hooked up in your kallsym rbtree thing, but whatever, we can fix that when needed.