File tree Expand file tree Collapse file tree 2 files changed +73
-0
lines changed 
tools/testing/selftests/bpf Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Original file line number Diff line number Diff line change 1414#include  "verifier_bounds_deduction_non_const.skel.h" 
1515#include  "verifier_bounds_mix_sign_unsign.skel.h" 
1616#include  "verifier_bpf_get_stack.skel.h" 
17+ #include  "verifier_bpf_trap.skel.h" 
1718#include  "verifier_bswap.skel.h" 
1819#include  "verifier_btf_ctx_access.skel.h" 
1920#include  "verifier_btf_unreliable_prog.skel.h" 
@@ -148,6 +149,7 @@ void test_verifier_bounds_deduction(void)     { RUN(verifier_bounds_deduction);
148149void  test_verifier_bounds_deduction_non_const (void )     { RUN (verifier_bounds_deduction_non_const ); }
149150void  test_verifier_bounds_mix_sign_unsign (void ) { RUN (verifier_bounds_mix_sign_unsign ); }
150151void  test_verifier_bpf_get_stack (void )        { RUN (verifier_bpf_get_stack ); }
152+ void  test_verifier_bpf_trap (void )             { RUN (verifier_bpf_trap ); }
151153void  test_verifier_bswap (void )                { RUN (verifier_bswap ); }
152154void  test_verifier_btf_ctx_access (void )       { RUN (verifier_btf_ctx_access ); }
153155void  test_verifier_btf_unreliable_prog (void )  { RUN (verifier_btf_unreliable_prog ); }
Original file line number Diff line number Diff line change 1+ // SPDX-License-Identifier: GPL-2.0 
2+ /* Copyright (c) 2025 Meta Platforms, Inc. and affiliates. */ 
3+ #include  <vmlinux.h> 
4+ #include  <bpf/bpf_helpers.h> 
5+ #include  "bpf_misc.h" 
6+ 
7+ #if  __clang_major__  >= 21  &&  0 
8+ SEC ("socket" )
9+ __description ("__builtin_trap with simple c code" )
10+ __failure  __msg ("unexpected __bpf_trap() due to uninitialized variable?" )
11+ void  bpf_builtin_trap_with_simple_c (void )
12+ {
13+ 	__builtin_trap ();
14+ }
15+ #endif 
16+ 
17+ SEC ("socket" )
18+ __description ("__bpf_trap with simple c code" )
19+ __failure  __msg ("unexpected __bpf_trap() due to uninitialized variable?" )
20+ void  bpf_trap_with_simple_c (void )
21+ {
22+ 	__bpf_trap ();
23+ }
24+ 
25+ SEC ("socket" )
26+ __description ("__bpf_trap as the second-from-last insn" )
27+ __failure  __msg ("unexpected __bpf_trap() due to uninitialized variable?" )
28+ __naked  void  bpf_trap_at_func_end (void )
29+ {
30+ 	asm volatile  (
31+ 	"r0 = 0;" 
32+ 	"call %[__bpf_trap];" 
33+ 	"exit;" 
34+ 	:
35+ 	: __imm (__bpf_trap )
36+ 	: __clobber_all );
37+ }
38+ 
39+ SEC ("socket" )
40+ __description ("dead code __bpf_trap in the middle of code" )
41+ __success 
42+ __naked  void  dead_bpf_trap_in_middle (void )
43+ {
44+ 	asm volatile  (
45+ 	"r0 = 0;" 
46+ 	"if r0 == 0 goto +1;" 
47+ 	"call %[__bpf_trap];" 
48+ 	"r0 = 2;" 
49+ 	"exit;" 
50+ 	:
51+ 	: __imm (__bpf_trap )
52+ 	: __clobber_all );
53+ }
54+ 
55+ SEC ("socket" )
56+ __description ("reachable __bpf_trap in the middle of code" )
57+ __failure  __msg ("unexpected __bpf_trap() due to uninitialized variable?" )
58+ __naked  void  live_bpf_trap_in_middle (void )
59+ {
60+ 	asm volatile  (
61+ 	"r0 = 0;" 
62+ 	"if r0 == 1 goto +1;" 
63+ 	"call %[__bpf_trap];" 
64+ 	"r0 = 2;" 
65+ 	"exit;" 
66+ 	:
67+ 	: __imm (__bpf_trap )
68+ 	: __clobber_all );
69+ }
70+ 
71+ char  _license [] SEC ("license" ) =  "GPL" ;
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments