On Mon, Jul 27, 2020 at 12:21 PM Roman Gushchin <guro@xxxxxx> wrote: > > Do not use rlimit-based memory accounting for cgroup storage maps. > It has been replaced with the memcg-based memory accounting. > > Signed-off-by: Roman Gushchin <guro@xxxxxx> Acked-by: Song Liu <songliubraving@xxxxxx> > --- > kernel/bpf/local_storage.c | 21 +-------------------- > 1 file changed, 1 insertion(+), 20 deletions(-) > > diff --git a/kernel/bpf/local_storage.c b/kernel/bpf/local_storage.c > index 117acb2e80fb..5f29a420849c 100644 > --- a/kernel/bpf/local_storage.c > +++ b/kernel/bpf/local_storage.c > @@ -288,8 +288,6 @@ static struct bpf_map *cgroup_storage_map_alloc(union bpf_attr *attr) > { > int numa_node = bpf_map_attr_numa_node(attr); > struct bpf_cgroup_storage_map *map; > - struct bpf_map_memory mem; > - int ret; > > if (attr->key_size != sizeof(struct bpf_cgroup_storage_key) && > attr->key_size != sizeof(__u64)) > @@ -309,18 +307,10 @@ static struct bpf_map *cgroup_storage_map_alloc(union bpf_attr *attr) > /* max_entries is not used and enforced to be 0 */ > return ERR_PTR(-EINVAL); > > - ret = bpf_map_charge_init(&mem, sizeof(struct bpf_cgroup_storage_map)); > - if (ret < 0) > - return ERR_PTR(ret); > - > map = kmalloc_node(sizeof(struct bpf_cgroup_storage_map), > __GFP_ZERO | GFP_USER | __GFP_ACCOUNT, numa_node); > - if (!map) { > - bpf_map_charge_finish(&mem); > + if (!map) > return ERR_PTR(-ENOMEM); > - } > - > - bpf_map_charge_move(&map->map.memory, &mem); > > /* copy mandatory map attributes */ > bpf_map_init_from_attr(&map->map, attr); > @@ -509,9 +499,6 @@ struct bpf_cgroup_storage *bpf_cgroup_storage_alloc(struct bpf_prog *prog, > > size = bpf_cgroup_storage_calculate_size(map, &pages); > > - if (bpf_map_charge_memlock(map, pages)) > - return ERR_PTR(-EPERM); > - > storage = kmalloc_node(sizeof(struct bpf_cgroup_storage), gfp, > map->numa_node); > if (!storage) > @@ -533,7 +520,6 @@ struct bpf_cgroup_storage *bpf_cgroup_storage_alloc(struct bpf_prog *prog, > return storage; > > enomem: > - bpf_map_uncharge_memlock(map, pages); > kfree(storage); > return ERR_PTR(-ENOMEM); > } > @@ -560,16 +546,11 @@ void bpf_cgroup_storage_free(struct bpf_cgroup_storage *storage) > { > enum bpf_cgroup_storage_type stype; > struct bpf_map *map; > - u32 pages; > > if (!storage) > return; > > map = &storage->map->map; > - > - bpf_cgroup_storage_calculate_size(map, &pages); > - bpf_map_uncharge_memlock(map, pages); > - > stype = cgroup_storage_type(map); > if (stype == BPF_CGROUP_STORAGE_SHARED) > call_rcu(&storage->rcu, free_shared_cgroup_storage_rcu); > -- > 2.26.2 >