Commit 8af1c8b8 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Daniel Borkmann

selftests/bpf: Make reference_tracking test use subtests

reference_tracking is actually a set of 9 sub-tests. Make it explicitly so.

Also, add explicit "classifier/" prefix to BPF program section names to
let libbpf correctly guess program type. Thus, also remove explicit
bpf_prog__set_type() call.
Signed-off-by: default avatarAndrii Nakryiko <andriin@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20191021033902.3856966-7-andriin@fb.com
parent f90415e9
...@@ -31,7 +31,8 @@ void test_reference_tracking(void) ...@@ -31,7 +31,8 @@ void test_reference_tracking(void)
if (strstr(title, ".text") != NULL) if (strstr(title, ".text") != NULL)
continue; continue;
bpf_program__set_type(prog, BPF_PROG_TYPE_SCHED_CLS); if (!test__start_subtest(title))
continue;
/* Expect verifier failure if test name has 'fail' */ /* Expect verifier failure if test name has 'fail' */
if (strstr(title, "fail") != NULL) { if (strstr(title, "fail") != NULL) {
......
...@@ -53,7 +53,7 @@ static struct bpf_sock_tuple *get_tuple(void *data, __u64 nh_off, ...@@ -53,7 +53,7 @@ static struct bpf_sock_tuple *get_tuple(void *data, __u64 nh_off,
return result; return result;
} }
SEC("sk_lookup_success") SEC("classifier/sk_lookup_success")
int bpf_sk_lookup_test0(struct __sk_buff *skb) int bpf_sk_lookup_test0(struct __sk_buff *skb)
{ {
void *data_end = (void *)(long)skb->data_end; void *data_end = (void *)(long)skb->data_end;
...@@ -78,7 +78,7 @@ int bpf_sk_lookup_test0(struct __sk_buff *skb) ...@@ -78,7 +78,7 @@ int bpf_sk_lookup_test0(struct __sk_buff *skb)
return sk ? TC_ACT_OK : TC_ACT_UNSPEC; return sk ? TC_ACT_OK : TC_ACT_UNSPEC;
} }
SEC("sk_lookup_success_simple") SEC("classifier/sk_lookup_success_simple")
int bpf_sk_lookup_test1(struct __sk_buff *skb) int bpf_sk_lookup_test1(struct __sk_buff *skb)
{ {
struct bpf_sock_tuple tuple = {}; struct bpf_sock_tuple tuple = {};
...@@ -90,7 +90,7 @@ int bpf_sk_lookup_test1(struct __sk_buff *skb) ...@@ -90,7 +90,7 @@ int bpf_sk_lookup_test1(struct __sk_buff *skb)
return 0; return 0;
} }
SEC("fail_use_after_free") SEC("classifier/fail_use_after_free")
int bpf_sk_lookup_uaf(struct __sk_buff *skb) int bpf_sk_lookup_uaf(struct __sk_buff *skb)
{ {
struct bpf_sock_tuple tuple = {}; struct bpf_sock_tuple tuple = {};
...@@ -105,7 +105,7 @@ int bpf_sk_lookup_uaf(struct __sk_buff *skb) ...@@ -105,7 +105,7 @@ int bpf_sk_lookup_uaf(struct __sk_buff *skb)
return family; return family;
} }
SEC("fail_modify_sk_pointer") SEC("classifier/fail_modify_sk_pointer")
int bpf_sk_lookup_modptr(struct __sk_buff *skb) int bpf_sk_lookup_modptr(struct __sk_buff *skb)
{ {
struct bpf_sock_tuple tuple = {}; struct bpf_sock_tuple tuple = {};
...@@ -120,7 +120,7 @@ int bpf_sk_lookup_modptr(struct __sk_buff *skb) ...@@ -120,7 +120,7 @@ int bpf_sk_lookup_modptr(struct __sk_buff *skb)
return 0; return 0;
} }
SEC("fail_modify_sk_or_null_pointer") SEC("classifier/fail_modify_sk_or_null_pointer")
int bpf_sk_lookup_modptr_or_null(struct __sk_buff *skb) int bpf_sk_lookup_modptr_or_null(struct __sk_buff *skb)
{ {
struct bpf_sock_tuple tuple = {}; struct bpf_sock_tuple tuple = {};
...@@ -134,7 +134,7 @@ int bpf_sk_lookup_modptr_or_null(struct __sk_buff *skb) ...@@ -134,7 +134,7 @@ int bpf_sk_lookup_modptr_or_null(struct __sk_buff *skb)
return 0; return 0;
} }
SEC("fail_no_release") SEC("classifier/fail_no_release")
int bpf_sk_lookup_test2(struct __sk_buff *skb) int bpf_sk_lookup_test2(struct __sk_buff *skb)
{ {
struct bpf_sock_tuple tuple = {}; struct bpf_sock_tuple tuple = {};
...@@ -143,7 +143,7 @@ int bpf_sk_lookup_test2(struct __sk_buff *skb) ...@@ -143,7 +143,7 @@ int bpf_sk_lookup_test2(struct __sk_buff *skb)
return 0; return 0;
} }
SEC("fail_release_twice") SEC("classifier/fail_release_twice")
int bpf_sk_lookup_test3(struct __sk_buff *skb) int bpf_sk_lookup_test3(struct __sk_buff *skb)
{ {
struct bpf_sock_tuple tuple = {}; struct bpf_sock_tuple tuple = {};
...@@ -155,7 +155,7 @@ int bpf_sk_lookup_test3(struct __sk_buff *skb) ...@@ -155,7 +155,7 @@ int bpf_sk_lookup_test3(struct __sk_buff *skb)
return 0; return 0;
} }
SEC("fail_release_unchecked") SEC("classifier/fail_release_unchecked")
int bpf_sk_lookup_test4(struct __sk_buff *skb) int bpf_sk_lookup_test4(struct __sk_buff *skb)
{ {
struct bpf_sock_tuple tuple = {}; struct bpf_sock_tuple tuple = {};
...@@ -172,7 +172,7 @@ void lookup_no_release(struct __sk_buff *skb) ...@@ -172,7 +172,7 @@ void lookup_no_release(struct __sk_buff *skb)
bpf_sk_lookup_tcp(skb, &tuple, sizeof(tuple), BPF_F_CURRENT_NETNS, 0); bpf_sk_lookup_tcp(skb, &tuple, sizeof(tuple), BPF_F_CURRENT_NETNS, 0);
} }
SEC("fail_no_release_subcall") SEC("classifier/fail_no_release_subcall")
int bpf_sk_lookup_test5(struct __sk_buff *skb) int bpf_sk_lookup_test5(struct __sk_buff *skb)
{ {
lookup_no_release(skb); lookup_no_release(skb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment