The following helpers are not relied on the CONFIG_HAVE_SINGLE_FTRACE_DIRECT_OPS guard. * trampoline_lock_all() * trampoline_unlock_all() * bpf_trampoline_multi_attach_init() Move them out of the CONFIG_HAVE_SINGLE_FTRACE_DIRECT_OPS guard in order to add tracing_multi link support for bpf progs. Keep the CONFIG_BPF_SYSCALL guard to avoid compiling warning when CONFIG_BPF_SYSCALL is disabled. Signed-off-by: Leon Hwang --- kernel/bpf/trampoline.c | 48 ++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c index a2fd0bd8c685..bb832af8703f 100644 --- a/kernel/bpf/trampoline.c +++ b/kernel/bpf/trampoline.c @@ -60,6 +60,32 @@ static void trampoline_unlock(struct bpf_trampoline *tr) mutex_unlock(select_trampoline_lock(tr)); } +#ifdef CONFIG_BPF_SYSCALL + +static void trampoline_lock_all(void) +{ + int i; + + for (i = 0; i < TRAMPOLINE_LOCKS_TABLE_SIZE; i++) + mutex_lock(&trampoline_locks[i].mutex); +} + +static void trampoline_unlock_all(void) +{ + int i; + + for (i = 0; i < TRAMPOLINE_LOCKS_TABLE_SIZE; i++) + mutex_unlock(&trampoline_locks[i].mutex); +} + +static void bpf_trampoline_multi_attach_init(struct bpf_trampoline *tr) +{ + tr->multi_attach.old_image = tr->cur_image; + tr->multi_attach.old_flags = tr->flags; +} + +#endif /* CONFIG_BPF_SYSCALL */ + struct bpf_trampoline_ops { int (*register_fentry)(struct bpf_trampoline *tr, struct bpf_tramp_image *im, void *data); int (*unregister_fentry)(struct bpf_trampoline *tr, u32 orig_flags, void *data); @@ -1574,22 +1600,6 @@ int __weak arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags, defined(CONFIG_HAVE_SINGLE_FTRACE_DIRECT_OPS) && \ defined(CONFIG_BPF_SYSCALL) -static void trampoline_lock_all(void) -{ - int i; - - for (i = 0; i < TRAMPOLINE_LOCKS_TABLE_SIZE; i++) - mutex_lock(&trampoline_locks[i].mutex); -} - -static void trampoline_unlock_all(void) -{ - int i; - - for (i = 0; i < TRAMPOLINE_LOCKS_TABLE_SIZE; i++) - mutex_unlock(&trampoline_locks[i].mutex); -} - static void remove_tracing_multi_data(struct bpf_tracing_multi_data *data) { ftrace_hash_remove(data->reg); @@ -1682,12 +1692,6 @@ static const struct bpf_trampoline_ops trampoline_multi_ops = { .modify_fentry = modify_fentry_multi, }; -static void bpf_trampoline_multi_attach_init(struct bpf_trampoline *tr) -{ - tr->multi_attach.old_image = tr->cur_image; - tr->multi_attach.old_flags = tr->flags; -} - static void bpf_trampoline_multi_attach_free(struct bpf_trampoline *tr) { /* -- 2.55.0