aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMartin KaFai Lau <kafai@fb.com>2018-06-02 12:06:50 -0400
committerAlexei Starovoitov <ast@kernel.org>2018-06-02 14:22:36 -0400
commitb9308ae696b2c35e862636eec631d95ff958c33d (patch)
treee6ec045510d123dbb9f6e1502e4c5aa809e88f6e /tools
parentb4b21a05b8fe7288087691e993c913a41fd6eb4b (diff)
bpf: btf: Check array t->size
This patch ensures array's t->size is 0. The array size is decided by its individual elem's size and the number of elements. Hence, t->size is not used and it must be 0. A test case is added to test_btf.c Signed-off-by: Martin KaFai Lau <kafai@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/selftests/bpf/test_btf.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/test_btf.c b/tools/testing/selftests/bpf/test_btf.c
index 35064df688c1..fd8246e84149 100644
--- a/tools/testing/selftests/bpf/test_btf.c
+++ b/tools/testing/selftests/bpf/test_btf.c
@@ -1179,6 +1179,29 @@ static struct btf_raw_test raw_tests[] = {
1179}, 1179},
1180 1180
1181{ 1181{
1182 .descr = "array test. t->size != 0\"",
1183 .raw_types = {
1184 /* int */ /* [1] */
1185 BTF_TYPE_INT_ENC(0, BTF_INT_SIGNED, 0, 32, 4),
1186 /* int[16] */ /* [2] */
1187 BTF_TYPE_ENC(0, BTF_INFO_ENC(BTF_KIND_ARRAY, 0, 0), 1),
1188 BTF_ARRAY_ENC(1, 1, 16),
1189 BTF_END_RAW,
1190 },
1191 .str_sec = "",
1192 .str_sec_size = sizeof(""),
1193 .map_type = BPF_MAP_TYPE_ARRAY,
1194 .map_name = "array_test_map",
1195 .key_size = sizeof(int),
1196 .value_size = sizeof(int),
1197 .key_type_id = 1,
1198 .value_type_id = 1,
1199 .max_entries = 4,
1200 .btf_load_err = true,
1201 .err_str = "size != 0",
1202},
1203
1204{
1182 .descr = "int test. invalid int_data", 1205 .descr = "int test. invalid int_data",
1183 .raw_types = { 1206 .raw_types = {
1184 BTF_TYPE_ENC(0, BTF_INFO_ENC(BTF_KIND_INT, 0, 0), 4), 1207 BTF_TYPE_ENC(0, BTF_INFO_ENC(BTF_KIND_INT, 0, 0), 4),