@@ -12652,18 +12652,18 @@ static int create_map(uint32_t type, uint32_t size_key,
12652
12652
return fd ;
12653
12653
}
12654
12654
12655
- static int create_prog_dummy1 (void )
12655
+ static int create_prog_dummy1 (enum bpf_map_type prog_type )
12656
12656
{
12657
12657
struct bpf_insn prog [] = {
12658
12658
BPF_MOV64_IMM (BPF_REG_0 , 42 ),
12659
12659
BPF_EXIT_INSN (),
12660
12660
};
12661
12661
12662
- return bpf_load_program (BPF_PROG_TYPE_SOCKET_FILTER , prog ,
12662
+ return bpf_load_program (prog_type , prog ,
12663
12663
ARRAY_SIZE (prog ), "GPL" , 0 , NULL , 0 );
12664
12664
}
12665
12665
12666
- static int create_prog_dummy2 (int mfd , int idx )
12666
+ static int create_prog_dummy2 (enum bpf_map_type prog_type , int mfd , int idx )
12667
12667
{
12668
12668
struct bpf_insn prog [] = {
12669
12669
BPF_MOV64_IMM (BPF_REG_3 , idx ),
@@ -12674,11 +12674,12 @@ static int create_prog_dummy2(int mfd, int idx)
12674
12674
BPF_EXIT_INSN (),
12675
12675
};
12676
12676
12677
- return bpf_load_program (BPF_PROG_TYPE_SOCKET_FILTER , prog ,
12677
+ return bpf_load_program (prog_type , prog ,
12678
12678
ARRAY_SIZE (prog ), "GPL" , 0 , NULL , 0 );
12679
12679
}
12680
12680
12681
- static int create_prog_array (uint32_t max_elem , int p1key )
12681
+ static int create_prog_array (enum bpf_map_type prog_type , uint32_t max_elem ,
12682
+ int p1key )
12682
12683
{
12683
12684
int p2key = 1 ;
12684
12685
int mfd , p1fd , p2fd ;
@@ -12690,8 +12691,8 @@ static int create_prog_array(uint32_t max_elem, int p1key)
12690
12691
return -1 ;
12691
12692
}
12692
12693
12693
- p1fd = create_prog_dummy1 ();
12694
- p2fd = create_prog_dummy2 (mfd , p2key );
12694
+ p1fd = create_prog_dummy1 (prog_type );
12695
+ p2fd = create_prog_dummy2 (prog_type , mfd , p2key );
12695
12696
if (p1fd < 0 || p2fd < 0 )
12696
12697
goto out ;
12697
12698
if (bpf_map_update_elem (mfd , & p1key , & p1fd , BPF_ANY ) < 0 )
@@ -12748,8 +12749,8 @@ static int create_cgroup_storage(bool percpu)
12748
12749
12749
12750
static char bpf_vlog [UINT_MAX >> 8 ];
12750
12751
12751
- static void do_test_fixup (struct bpf_test * test , struct bpf_insn * prog ,
12752
- int * map_fds )
12752
+ static void do_test_fixup (struct bpf_test * test , enum bpf_map_type prog_type ,
12753
+ struct bpf_insn * prog , int * map_fds )
12753
12754
{
12754
12755
int * fixup_map1 = test -> fixup_map1 ;
12755
12756
int * fixup_map2 = test -> fixup_map2 ;
@@ -12805,15 +12806,15 @@ static void do_test_fixup(struct bpf_test *test, struct bpf_insn *prog,
12805
12806
}
12806
12807
12807
12808
if (* fixup_prog1 ) {
12808
- map_fds [4 ] = create_prog_array (4 , 0 );
12809
+ map_fds [4 ] = create_prog_array (prog_type , 4 , 0 );
12809
12810
do {
12810
12811
prog [* fixup_prog1 ].imm = map_fds [4 ];
12811
12812
fixup_prog1 ++ ;
12812
12813
} while (* fixup_prog1 );
12813
12814
}
12814
12815
12815
12816
if (* fixup_prog2 ) {
12816
- map_fds [5 ] = create_prog_array (8 , 7 );
12817
+ map_fds [5 ] = create_prog_array (prog_type , 8 , 7 );
12817
12818
do {
12818
12819
prog [* fixup_prog2 ].imm = map_fds [5 ];
12819
12820
fixup_prog2 ++ ;
@@ -12859,11 +12860,13 @@ static void do_test_single(struct bpf_test *test, bool unpriv,
12859
12860
for (i = 0 ; i < MAX_NR_MAPS ; i ++ )
12860
12861
map_fds [i ] = -1 ;
12861
12862
12862
- do_test_fixup (test , prog , map_fds );
12863
+ if (!prog_type )
12864
+ prog_type = BPF_PROG_TYPE_SOCKET_FILTER ;
12865
+ do_test_fixup (test , prog_type , prog , map_fds );
12863
12866
prog_len = probe_filter_length (prog );
12864
12867
12865
- fd_prog = bpf_verify_program (prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER ,
12866
- prog , prog_len , test -> flags & F_LOAD_WITH_STRICT_ALIGNMENT ,
12868
+ fd_prog = bpf_verify_program (prog_type , prog , prog_len ,
12869
+ test -> flags & F_LOAD_WITH_STRICT_ALIGNMENT ,
12867
12870
"GPL" , 0 , bpf_vlog , sizeof (bpf_vlog ), 1 );
12868
12871
12869
12872
expected_ret = unpriv && test -> result_unpriv != UNDEF ?
0 commit comments