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 <[email protected]>
---
 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


Reply via email to