Re: [PATCH 12/18] bpf: Add trampolines to kallsyms
From: Jiri Olsa <hidden>
Date: 2020-02-27 08:08:34
Also in:
bpf
On Wed, Feb 26, 2020 at 10:26:40PM -0800, Martin KaFai Lau wrote: SNIP
quoted
+ ksym->start = (unsigned long) data; + ksym->end = ksym->start + BPF_IMAGE_SIZE; + bpf_ksym_add(ksym); + perf_event_ksymbol(PERF_RECORD_KSYMBOL_TYPE_BPF, ksym->start, + BPF_IMAGE_SIZE, false, ksym->name); +} + +void bpf_image_ksym_del(struct bpf_ksym *ksym) +{ + bpf_ksym_del(ksym); + perf_event_ksymbol(PERF_RECORD_KSYMBOL_TYPE_BPF, ksym->start, + BPF_IMAGE_SIZE, true, ksym->name); +} + struct bpf_trampoline *bpf_trampoline_lookup(u64 key) { struct bpf_trampoline *tr;@@ -131,6 +148,7 @@ struct bpf_trampoline *bpf_trampoline_lookup(u64 key) for (i = 0; i < BPF_TRAMP_MAX; i++) INIT_HLIST_HEAD(&tr->progs_hlist[i]); tr->image = image; + INIT_LIST_HEAD_RCU(&tr->ksym.lnode); out: mutex_unlock(&trampoline_mutex); return tr;@@ -267,6 +285,14 @@ static enum bpf_tramp_prog_type bpf_attach_type_to_tramp(enum bpf_attach_type t) } } +static void bpf_trampoline_ksym_add(struct bpf_trampoline *tr) +{ + struct bpf_ksym *ksym = &tr->ksym; + + snprintf(ksym->name, KSYM_NAME_LEN, "bpf_trampoline_%llu", tr->key);Do you have plan to support struct_ops which is also using trampoline (in bpf_struct_ops_map_update_elem())? Any idea on the name? bpf_struct_ops_<map_id>?
right, I was wondering we should also do that, I'll check on it jirka