lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 12 Dec 2018 10:27:24 -0800
From:   Stanislav Fomichev <sdf@...gle.com>
To:     netdev@...r.kernel.org
Cc:     davem@...emloft.net, ast@...nel.org, daniel@...earbox.net,
        Stanislav Fomichev <sdf@...gle.com>
Subject: [PATCH bpf-next 1/2] selftests/bpf: skip verifier tests that depend
 on CONFIG_CGROUP_BPF

The following prog types don't make sense without bpf cgroup:
* BPF_PROG_TYPE_CGROUP_SKB
* BPF_PROG_TYPE_CGROUP_SOCK
* BPF_PROG_TYPE_CGROUP_SOCK_ADDR

Skip running verifier tests that exercise these prog types if
kernel is built without proper support.

See commit e5c504858a18 ("selftests/bpf: skip verifier sockmap tests
on kernels without support") for original motivation.

Signed-off-by: Stanislav Fomichev <sdf@...gle.com>
---
 tools/testing/selftests/bpf/test_verifier.c | 35 +++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c
index f5015566ae1b..b5470a399996 100644
--- a/tools/testing/selftests/bpf/test_verifier.c
+++ b/tools/testing/selftests/bpf/test_verifier.c
@@ -44,6 +44,7 @@
 /* fallback to all features enabled */
 # define CONFIG_BPF_STREAM_PARSER 1
 # define CONFIG_XDP_SOCKETS 1
+# define CONFIG_CGROUP_BPF 1
 #endif
 #include "bpf_rlimit.h"
 #include "bpf_rand.h"
@@ -2098,6 +2099,7 @@ static struct bpf_test tests[] = {
 		.errstr = "invalid bpf_context access",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"check cb access: half",
@@ -2256,6 +2258,7 @@ static struct bpf_test tests[] = {
 		.errstr = "invalid bpf_context access",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"check cb access: word",
@@ -2428,6 +2431,7 @@ static struct bpf_test tests[] = {
 		.errstr = "invalid bpf_context access",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"check out of range skb->cb access",
@@ -4981,6 +4985,7 @@ static struct bpf_test tests[] = {
 		.result_unpriv = REJECT,
 		.errstr_unpriv = "invalid bpf_context access off=76 size=4",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"direct packet read test#2 for CGROUP_SKB",
@@ -5005,6 +5010,7 @@ static struct bpf_test tests[] = {
 		},
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"direct packet read test#3 for CGROUP_SKB",
@@ -5036,6 +5042,7 @@ static struct bpf_test tests[] = {
 		},
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"direct packet read test#4 for CGROUP_SKB",
@@ -5071,6 +5078,7 @@ static struct bpf_test tests[] = {
 		},
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid access of tc_classid for CGROUP_SKB",
@@ -5083,6 +5091,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid bpf_context access",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid access of data_meta for CGROUP_SKB",
@@ -5095,6 +5104,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid bpf_context access",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid access of flow_keys for CGROUP_SKB",
@@ -5107,6 +5117,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid bpf_context access",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid write access to napi_id for CGROUP_SKB",
@@ -5121,6 +5132,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid bpf_context access",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"valid cgroup storage access",
@@ -5137,6 +5149,7 @@ static struct bpf_test tests[] = {
 		.fixup_cgroup_storage = { 1 },
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid cgroup storage access 1",
@@ -5154,6 +5167,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "cannot pass map_type 1 into func bpf_get_local_storage",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid cgroup storage access 2",
@@ -5168,6 +5182,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "fd 1 is not pointing to valid bpf_map",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid cgroup storage access 3",
@@ -5185,6 +5200,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid access to map value, value_size=64 off=256 size=4",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid cgroup storage access 4",
@@ -5202,6 +5218,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid access to map value, value_size=64 off=-2 size=4",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 		.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
 	},
 	{
@@ -5220,6 +5237,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "get_local_storage() doesn't support non-zero flags",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid cgroup storage access 6",
@@ -5238,6 +5256,7 @@ static struct bpf_test tests[] = {
 		.errstr = "get_local_storage() doesn't support non-zero flags",
 		.errstr_unpriv = "R2 leaks addr into helper function",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"valid per-cpu cgroup storage access",
@@ -5254,6 +5273,7 @@ static struct bpf_test tests[] = {
 		.fixup_percpu_cgroup_storage = { 1 },
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid per-cpu cgroup storage access 1",
@@ -5271,6 +5291,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "cannot pass map_type 1 into func bpf_get_local_storage",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid per-cpu cgroup storage access 2",
@@ -5285,6 +5306,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "fd 1 is not pointing to valid bpf_map",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid per-cpu cgroup storage access 3",
@@ -5302,6 +5324,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid access to map value, value_size=64 off=256 size=4",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid per-cpu cgroup storage access 4",
@@ -5319,6 +5342,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "invalid access to map value, value_size=64 off=-2 size=4",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 		.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
 	},
 	{
@@ -5337,6 +5361,7 @@ static struct bpf_test tests[] = {
 		.result = REJECT,
 		.errstr = "get_local_storage() doesn't support non-zero flags",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"invalid per-cpu cgroup storage access 6",
@@ -5355,6 +5380,7 @@ static struct bpf_test tests[] = {
 		.errstr = "get_local_storage() doesn't support non-zero flags",
 		.errstr_unpriv = "R2 leaks addr into helper function",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"write tstamp from CGROUP_SKB",
@@ -5369,6 +5395,7 @@ static struct bpf_test tests[] = {
 		.result_unpriv = REJECT,
 		.errstr_unpriv = "invalid bpf_context access off=152 size=8",
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"read tstamp from CGROUP_SKB",
@@ -5380,6 +5407,7 @@ static struct bpf_test tests[] = {
 		},
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"multiple registers share map_lookup_elem result",
@@ -10770,6 +10798,7 @@ static struct bpf_test tests[] = {
 		.errstr = "R0 has value (0x0; 0xffffffff)",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"bpf_exit with invalid return code. test2",
@@ -10780,6 +10809,7 @@ static struct bpf_test tests[] = {
 		},
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"bpf_exit with invalid return code. test3",
@@ -10791,6 +10821,7 @@ static struct bpf_test tests[] = {
 		.errstr = "R0 has value (0x0; 0x3)",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"bpf_exit with invalid return code. test4",
@@ -10800,6 +10831,7 @@ static struct bpf_test tests[] = {
 		},
 		.result = ACCEPT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"bpf_exit with invalid return code. test5",
@@ -10810,6 +10842,7 @@ static struct bpf_test tests[] = {
 		.errstr = "R0 has value (0x2; 0x0)",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"bpf_exit with invalid return code. test6",
@@ -10820,6 +10853,7 @@ static struct bpf_test tests[] = {
 		.errstr = "R0 is not a known value (ctx)",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"bpf_exit with invalid return code. test7",
@@ -10832,6 +10866,7 @@ static struct bpf_test tests[] = {
 		.errstr = "R0 has unknown scalar value",
 		.result = REJECT,
 		.prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+		.config_disabled = !IS_BUILTIN(CONFIG_CGROUP_BPF),
 	},
 	{
 		"calls: basic sanity",
-- 
2.20.0.rc2.403.gdbc3b29805-goog

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ