mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 14:19:16 +00:00
selftests/bpf: check that modifier resolves after pointer
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: Lorenz Bauer <lmb@isovalent.com> Link: https://lore.kernel.org/r/20230306112138.155352-3-lmb@isovalent.com Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
This commit is contained in:
parent
9b459804ff
commit
dfdd608c3b
1 changed files with 28 additions and 0 deletions
|
@ -879,6 +879,34 @@ static struct btf_raw_test raw_tests[] = {
|
||||||
.btf_load_err = true,
|
.btf_load_err = true,
|
||||||
.err_str = "Invalid elem",
|
.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.
|
/* Test member exceeds the size of struct.
|
||||||
*
|
*
|
||||||
* struct A {
|
* struct A {
|
||||||
|
|
Loading…
Reference in a new issue