put_callchain_buffers();
 }
 
+static u64 stack_map_mem_usage(const struct bpf_map *map)
+{
+       struct bpf_stack_map *smap = container_of(map, struct bpf_stack_map, map);
+       u64 value_size = map->value_size;
+       u64 n_buckets = smap->n_buckets;
+       u64 enties = map->max_entries;
+       u64 usage = sizeof(*smap);
+
+       usage += n_buckets * sizeof(struct stack_map_bucket *);
+       usage += enties * (sizeof(struct stack_map_bucket) + value_size);
+       return usage;
+}
+
 BTF_ID_LIST_SINGLE(stack_trace_map_btf_ids, struct, bpf_stack_map)
 const struct bpf_map_ops stack_trace_map_ops = {
        .map_meta_equal = bpf_map_meta_equal,
        .map_update_elem = stack_map_update_elem,
        .map_delete_elem = stack_map_delete_elem,
        .map_check_btf = map_check_no_btf,
+       .map_mem_usage = stack_map_mem_usage,
        .map_btf_id = &stack_trace_map_btf_ids[0],
 };