On Thu, 2024-02-08 at 20:06 -0800, Alexei Starovoitov wrote: [...] > @@ -9830,8 +9861,8 @@ int bpf_map__set_value_size(struct bpf_map *map, __u32 size) > int err; > size_t mmap_old_sz, mmap_new_sz; > > - mmap_old_sz = bpf_map_mmap_sz(map->def.value_size, map->def.max_entries); > - mmap_new_sz = bpf_map_mmap_sz(size, map->def.max_entries); > + mmap_old_sz = bpf_map_mmap_sz(map); > + mmap_new_sz = __bpf_map_mmap_sz(size, map->def.max_entries); > err = bpf_map_mmap_resize(map, mmap_old_sz, mmap_new_sz); > if (err) { > pr_warn("map '%s': failed to resize memory-mapped region: %d\n", I think that as is bpf_map__set_value_size() won't work for arenas. The bpf_map_mmap_resize() does the following: static int bpf_map_mmap_resize(struct bpf_map *map, size_t old_sz, size_t new_sz) { ... mmaped = mmap(NULL, new_sz, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); ... memcpy(mmaped, map->mmaped, min(old_sz, new_sz)); munmap(map->mmaped, old_sz); map->mmaped = mmaped; ... } Which does not seem to tie the new mapping to arena, or am I missing something?