]> Git Repo - J-linux.git/blob - tools/testing/selftests/bpf/prog_tests/bad_struct_ops.c
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / tools / testing / selftests / bpf / prog_tests / bad_struct_ops.c
1 // SPDX-License-Identifier: GPL-2.0
2
3 #include <test_progs.h>
4 #include "bad_struct_ops.skel.h"
5 #include "bad_struct_ops2.skel.h"
6
7 static void invalid_prog_reuse(void)
8 {
9         struct bad_struct_ops *skel;
10         char *log = NULL;
11         int err;
12
13         skel = bad_struct_ops__open();
14         if (!ASSERT_OK_PTR(skel, "bad_struct_ops__open"))
15                 return;
16
17         if (start_libbpf_log_capture())
18                 goto cleanup;
19
20         err = bad_struct_ops__load(skel);
21         log = stop_libbpf_log_capture();
22         ASSERT_ERR(err, "bad_struct_ops__load should fail");
23         ASSERT_HAS_SUBSTR(log,
24                 "struct_ops init_kern testmod_2 func ptr test_1: invalid reuse of prog test_1",
25                 "expected init_kern message");
26
27 cleanup:
28         free(log);
29         bad_struct_ops__destroy(skel);
30 }
31
32 static void unused_program(void)
33 {
34         struct bad_struct_ops2 *skel;
35         char *log = NULL;
36         int err;
37
38         skel = bad_struct_ops2__open();
39         if (!ASSERT_OK_PTR(skel, "bad_struct_ops2__open"))
40                 return;
41
42         /* struct_ops programs not referenced from any maps are open
43          * with autoload set to true.
44          */
45         ASSERT_TRUE(bpf_program__autoload(skel->progs.foo), "foo autoload == true");
46
47         if (start_libbpf_log_capture())
48                 goto cleanup;
49
50         err = bad_struct_ops2__load(skel);
51         ASSERT_ERR(err, "bad_struct_ops2__load should fail");
52         log = stop_libbpf_log_capture();
53         ASSERT_HAS_SUBSTR(log, "prog 'foo': failed to load",
54                           "message about 'foo' failing to load");
55
56 cleanup:
57         free(log);
58         bad_struct_ops2__destroy(skel);
59 }
60
61 void test_bad_struct_ops(void)
62 {
63         if (test__start_subtest("invalid_prog_reuse"))
64                 invalid_prog_reuse();
65         if (test__start_subtest("unused_program"))
66                 unused_program();
67 }
This page took 0.02837 seconds and 4 git commands to generate.