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