@@ -28,37 +28,54 @@ static void test_bpf_spin_lock(bool is_spin_lock)
2828 tracing_failure__destroy (skel );
2929}
3030
31- static void test_tracing_deny ( void )
31+ static void test_tracing_fail_prog ( const char * prog_name , const char * exp_msg )
3232{
3333 struct tracing_failure * skel ;
34+ struct bpf_program * prog ;
3435 char log_buf [256 ];
35- int btf_id , err ;
36-
37- /* migrate_disable depends on CONFIG_SMP */
38- btf_id = libbpf_find_vmlinux_btf_id ("migrate_disable" , BPF_TRACE_FENTRY );
39- if (btf_id <= 0 ) {
40- test__skip ();
41- return ;
42- }
36+ int err ;
4337
4438 skel = tracing_failure__open ();
4539 if (!ASSERT_OK_PTR (skel , "tracing_failure__open" ))
4640 return ;
4741
48- bpf_program__set_autoload (skel -> progs .tracing_deny , true);
49- bpf_program__set_log_buf (skel -> progs .tracing_deny , log_buf , sizeof (log_buf ));
42+ prog = bpf_object__find_program_by_name (skel -> obj , prog_name );
43+ if (!ASSERT_OK_PTR (prog , "bpf_object__find_program_by_name" ))
44+ goto out ;
45+
46+ bpf_program__set_autoload (prog , true);
47+ bpf_program__set_log_buf (prog , log_buf , sizeof (log_buf ));
5048
5149 err = tracing_failure__load (skel );
5250 if (!ASSERT_ERR (err , "tracing_failure__load" ))
5351 goto out ;
5452
55- ASSERT_HAS_SUBSTR (log_buf ,
56- "Attaching tracing programs to function 'migrate_disable' is rejected." ,
57- "log_buf" );
53+ ASSERT_HAS_SUBSTR (log_buf , exp_msg , "log_buf" );
5854out :
5955 tracing_failure__destroy (skel );
6056}
6157
58+ static void test_tracing_deny (void )
59+ {
60+ int btf_id ;
61+
62+ /* migrate_disable depends on CONFIG_SMP */
63+ btf_id = libbpf_find_vmlinux_btf_id ("migrate_disable" , BPF_TRACE_FENTRY );
64+ if (btf_id <= 0 ) {
65+ test__skip ();
66+ return ;
67+ }
68+
69+ test_tracing_fail_prog ("tracing_deny" ,
70+ "Attaching tracing programs to function 'migrate_disable' is rejected." );
71+ }
72+
73+ static void test_fexit_noreturns (void )
74+ {
75+ test_tracing_fail_prog ("fexit_noreturns" ,
76+ "Attaching fexit/fmod_ret to __noreturn function 'do_exit' is rejected." );
77+ }
78+
6279void test_tracing_failure (void )
6380{
6481 if (test__start_subtest ("bpf_spin_lock" ))
@@ -67,4 +84,6 @@ void test_tracing_failure(void)
6784 test_bpf_spin_lock (false);
6885 if (test__start_subtest ("tracing_deny" ))
6986 test_tracing_deny ();
87+ if (test__start_subtest ("fexit_noreturns" ))
88+ test_fexit_noreturns ();
7089}
0 commit comments