struct test_global_map_resize *skel;
        struct bpf_map *map;
        const __u32 desired_sz = sizeof(skel->bss->sum) + sysconf(_SC_PAGE_SIZE) * 2;
-       size_t array_len, actual_sz;
+       size_t array_len, actual_sz, new_sz;
 
        skel = test_global_map_resize__open();
        if (!ASSERT_OK_PTR(skel, "test_global_map_resize__open"))
        if (!ASSERT_EQ(bpf_map__value_size(map), desired_sz, "resize"))
                goto teardown;
 
+       new_sz = sizeof(skel->data_percpu_arr->percpu_arr[0]) * libbpf_num_possible_cpus();
+       err = bpf_map__set_value_size(skel->maps.data_percpu_arr, new_sz);
+       ASSERT_OK(err, "percpu_arr_resize");
+
        /* set the expected number of elements based on the resized array */
        array_len = (desired_sz - sizeof(skel->bss->sum)) / sizeof(skel->bss->array[0]);
        if (!ASSERT_GT(array_len, 1, "array_len"))
 
 static void global_map_resize_data_subtest(void)
 {
-       int err;
        struct test_global_map_resize *skel;
        struct bpf_map *map;
        const __u32 desired_sz = sysconf(_SC_PAGE_SIZE) * 2;
-       size_t array_len, actual_sz;
+       size_t array_len, actual_sz, new_sz;
+       int err;
 
        skel = test_global_map_resize__open();
        if (!ASSERT_OK_PTR(skel, "test_global_map_resize__open"))
        if (!ASSERT_EQ(bpf_map__value_size(map), desired_sz, "resize"))
                goto teardown;
 
+       new_sz = sizeof(skel->data_percpu_arr->percpu_arr[0]) * libbpf_num_possible_cpus();
+       err = bpf_map__set_value_size(skel->maps.data_percpu_arr, new_sz);
+       ASSERT_OK(err, "percpu_arr_resize");
+
        /* set the expected number of elements based on the resized array */
        array_len = (desired_sz - sizeof(skel->bss->sum)) / sizeof(skel->data_custom->my_array[0]);
        if (!ASSERT_GT(array_len, 1, "array_len"))
 
 int my_array_first[1] SEC(".data.array_not_last");
 int my_int_last SEC(".data.array_not_last");
 
+int percpu_arr[1] SEC(".data.percpu_arr");
+
 SEC("tp/syscalls/sys_enter_getpid")
 int bss_array_sum(void *ctx)
 {
        if (pid != (bpf_get_current_pid_tgid() >> 32))
                return 0;
 
-       sum = 0;
+       /* this will be zero, we just rely on verifier not rejecting this */
+       sum = percpu_arr[bpf_get_smp_processor_id()];
 
        for (size_t i = 0; i < bss_array_len; ++i)
                sum += array[i];
        if (pid != (bpf_get_current_pid_tgid() >> 32))
                return 0;
 
-       sum = 0;
+       /* this will be zero, we just rely on verifier not rejecting this */
+       sum = percpu_arr[bpf_get_smp_processor_id()];
 
        for (size_t i = 0; i < data_array_len; ++i)
                sum += my_array[i];