selftests/bpf: Add bpf_testmod_fentry_* functions
authorJiri Olsa <jolsa@kernel.org>
Tue, 25 Oct 2022 13:41:46 +0000 (15:41 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 25 Oct 2022 17:14:51 +0000 (10:14 -0700)
Adding 3 bpf_testmod_fentry_* functions to have a way to test
kprobe multi link on kernel module. They follow bpf_fentry_test*
functions prototypes/code.

Adding equivalent functions to all bpf_fentry_test* does not
seems necessary at the moment, could be added later.

Acked-by: Song Liu <song@kernel.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20221025134148.3300700-7-jolsa@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c

index a6021d6..5085fea 100644 (file)
@@ -128,6 +128,23 @@ __weak noinline struct file *bpf_testmod_return_ptr(int arg)
        }
 }
 
+noinline int bpf_testmod_fentry_test1(int a)
+{
+       return a + 1;
+}
+
+noinline int bpf_testmod_fentry_test2(int a, u64 b)
+{
+       return a + b;
+}
+
+noinline int bpf_testmod_fentry_test3(char a, int b, u64 c)
+{
+       return a + b + c;
+}
+
+int bpf_testmod_fentry_ok;
+
 noinline ssize_t
 bpf_testmod_test_read(struct file *file, struct kobject *kobj,
                      struct bin_attribute *bin_attr,
@@ -167,6 +184,13 @@ bpf_testmod_test_read(struct file *file, struct kobject *kobj,
                        return snprintf(buf, len, "%d\n", writable.val);
        }
 
+       if (bpf_testmod_fentry_test1(1) != 2 ||
+           bpf_testmod_fentry_test2(2, 3) != 5 ||
+           bpf_testmod_fentry_test3(4, 5, 6) != 15)
+               goto out;
+
+       bpf_testmod_fentry_ok = 1;
+out:
        return -EIO; /* always fail */
 }
 EXPORT_SYMBOL(bpf_testmod_test_read);