From: Yuan Chen <[email protected]>

obj_priv_btf_success, obj_priv_implicit_token and
obj_priv_implicit_token_envvar use the dummy_st_ops_success skeleton,
whose struct_ops programs reference global variables backed by ARRAY
maps.  Without BPF_MAP_TYPE_ARRAY in the token allowed map types,
bpf_object__load() fails because the kernel rejects ARRAY map creation
for global data.

Add BPF_MAP_TYPE_ARRAY to the token permission mask for these three
subtests so their skeletons can load successfully.

This is distinct from the libbpf probe issue: the skeletons genuinely
require ARRAY maps for their global data, not merely for probing.

Signed-off-by: Yuan Chen <[email protected]>
---
 tools/testing/selftests/bpf/prog_tests/token.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/token.c 
b/tools/testing/selftests/bpf/prog_tests/token.c
index f2f5d36ae00a..1812de87bedb 100644
--- a/tools/testing/selftests/bpf/prog_tests/token.c
+++ b/tools/testing/selftests/bpf/prog_tests/token.c
@@ -1214,7 +1214,7 @@ void serial_test_token(void)
                struct bpffs_opts opts = {
                        /* allow BTF loading */
                        .cmds = bit(BPF_BTF_LOAD) | bit(BPF_MAP_CREATE) | 
bit(BPF_PROG_LOAD),
-                       .maps = bit(BPF_MAP_TYPE_STRUCT_OPS),
+                       .maps = bit(BPF_MAP_TYPE_STRUCT_OPS) | 
bit(BPF_MAP_TYPE_ARRAY),
                        .progs = bit(BPF_PROG_TYPE_STRUCT_OPS),
                        .attachs = ~0ULL,
                };
@@ -1225,7 +1225,7 @@ void serial_test_token(void)
                struct bpffs_opts opts = {
                        /* allow BTF loading */
                        .cmds = bit(BPF_BTF_LOAD) | bit(BPF_MAP_CREATE) | 
bit(BPF_PROG_LOAD),
-                       .maps = bit(BPF_MAP_TYPE_STRUCT_OPS),
+                       .maps = bit(BPF_MAP_TYPE_STRUCT_OPS) | 
bit(BPF_MAP_TYPE_ARRAY),
                        .progs = bit(BPF_PROG_TYPE_STRUCT_OPS),
                        .attachs = ~0ULL,
                };
@@ -1236,7 +1236,7 @@ void serial_test_token(void)
                struct bpffs_opts opts = {
                        /* allow BTF loading */
                        .cmds = bit(BPF_BTF_LOAD) | bit(BPF_MAP_CREATE) | 
bit(BPF_PROG_LOAD),
-                       .maps = bit(BPF_MAP_TYPE_STRUCT_OPS),
+                       .maps = bit(BPF_MAP_TYPE_STRUCT_OPS) | 
bit(BPF_MAP_TYPE_ARRAY),
                        .progs = bit(BPF_PROG_TYPE_STRUCT_OPS),
                        .attachs = ~0ULL,
                };
-- 
2.54.0


Reply via email to