Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 97115221 authored by Lorenz Bauer's avatar Lorenz Bauer Committed by Greg Kroah-Hartman
Browse files

selftests/bpf: check that modifier resolves after pointer



[ Upstream commit dfdd608c3b365f0fd49d7e13911ebcde06b9865b ]

Add a regression test that ensures that a VAR pointing at a
modifier which follows a PTR (or STRUCT or ARRAY) is resolved
correctly by the datasec validator.

Signed-off-by: default avatarLorenz Bauer <lmb@isovalent.com>
Link: https://lore.kernel.org/r/20230306112138.155352-3-lmb@isovalent.com


Signed-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 2100e374
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -920,6 +920,34 @@ static struct btf_raw_test raw_tests[] = {
	.btf_load_err = true,
	.err_str = "Invalid elem",
},
{
	.descr = "var after datasec, ptr followed by modifier",
	.raw_types = {
		/* .bss section */				/* [1] */
		BTF_TYPE_ENC(NAME_TBD, BTF_INFO_ENC(BTF_KIND_DATASEC, 0, 2),
			sizeof(void*)+4),
		BTF_VAR_SECINFO_ENC(4, 0, sizeof(void*)),
		BTF_VAR_SECINFO_ENC(6, sizeof(void*), 4),
		/* int */					/* [2] */
		BTF_TYPE_INT_ENC(0, BTF_INT_SIGNED, 0, 32, 4),
		/* int* */					/* [3] */
		BTF_TYPE_ENC(0, BTF_INFO_ENC(BTF_KIND_PTR, 0, 0), 2),
		BTF_VAR_ENC(NAME_TBD, 3, 0),			/* [4] */
		/* const int */					/* [5] */
		BTF_TYPE_ENC(0, BTF_INFO_ENC(BTF_KIND_CONST, 0, 0), 2),
		BTF_VAR_ENC(NAME_TBD, 5, 0),			/* [6] */
		BTF_END_RAW,
	},
	.str_sec = "\0a\0b\0c\0",
	.str_sec_size = sizeof("\0a\0b\0c\0"),
	.map_type = BPF_MAP_TYPE_ARRAY,
	.map_name = ".bss",
	.key_size = sizeof(int),
	.value_size = sizeof(void*)+4,
	.key_type_id = 0,
	.value_type_id = 1,
	.max_entries = 1,
},
/* Test member exceeds the size of struct.
 *
 * struct A {