Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
 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
 7static 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
27cleanup:
28	free(log);
29	bad_struct_ops__destroy(skel);
30}
31
32static 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
56cleanup:
57	free(log);
58	bad_struct_ops2__destroy(skel);
59}
60
61void 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}