brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · 6a70721 Raw
68 lines · c
1// SPDX-License-Identifier: GPL-2.02 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 open43	 * 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}68