Message ID | 20200727184506.2279656-16-guro@fb.com |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | bpf: switch to memcg-based memory accounting | expand |
On Mon, Jul 27, 2020 at 12:22 PM Roman Gushchin <guro@fb.com> wrote: > > Do not use rlimit-based memory accounting for cpumap maps. > It has been replaced with the memcg-based memory accounting. > > Signed-off-by: Roman Gushchin <guro@fb.com> Acked-by: Song Liu <songliubraving@fb.com> > --- > kernel/bpf/cpumap.c | 16 +--------------- > 1 file changed, 1 insertion(+), 15 deletions(-) > > diff --git a/kernel/bpf/cpumap.c b/kernel/bpf/cpumap.c > index 74ae9fcbe82e..50f3444a3301 100644 > --- a/kernel/bpf/cpumap.c > +++ b/kernel/bpf/cpumap.c > @@ -86,8 +86,6 @@ static struct bpf_map *cpu_map_alloc(union bpf_attr *attr) > u32 value_size = attr->value_size; > struct bpf_cpu_map *cmap; > int err = -ENOMEM; > - u64 cost; > - int ret; > > if (!bpf_capable()) > return ERR_PTR(-EPERM); > @@ -111,26 +109,14 @@ static struct bpf_map *cpu_map_alloc(union bpf_attr *attr) > goto free_cmap; > } > > - /* make sure page count doesn't overflow */ > - cost = (u64) cmap->map.max_entries * sizeof(struct bpf_cpu_map_entry *); > - > - /* Notice returns -EPERM on if map size is larger than memlock limit */ > - ret = bpf_map_charge_init(&cmap->map.memory, cost); > - if (ret) { > - err = ret; > - goto free_cmap; > - } > - > /* Alloc array for possible remote "destination" CPUs */ > cmap->cpu_map = bpf_map_area_alloc(cmap->map.max_entries * > sizeof(struct bpf_cpu_map_entry *), > cmap->map.numa_node); > if (!cmap->cpu_map) > - goto free_charge; > + goto free_cmap; > > return &cmap->map; > -free_charge: > - bpf_map_charge_finish(&cmap->map.memory); > free_cmap: > kfree(cmap); > return ERR_PTR(err); > -- > 2.26.2 >
diff --git a/kernel/bpf/cpumap.c b/kernel/bpf/cpumap.c index 74ae9fcbe82e..50f3444a3301 100644 --- a/kernel/bpf/cpumap.c +++ b/kernel/bpf/cpumap.c @@ -86,8 +86,6 @@ static struct bpf_map *cpu_map_alloc(union bpf_attr *attr) u32 value_size = attr->value_size; struct bpf_cpu_map *cmap; int err = -ENOMEM; - u64 cost; - int ret; if (!bpf_capable()) return ERR_PTR(-EPERM); @@ -111,26 +109,14 @@ static struct bpf_map *cpu_map_alloc(union bpf_attr *attr) goto free_cmap; } - /* make sure page count doesn't overflow */ - cost = (u64) cmap->map.max_entries * sizeof(struct bpf_cpu_map_entry *); - - /* Notice returns -EPERM on if map size is larger than memlock limit */ - ret = bpf_map_charge_init(&cmap->map.memory, cost); - if (ret) { - err = ret; - goto free_cmap; - } - /* Alloc array for possible remote "destination" CPUs */ cmap->cpu_map = bpf_map_area_alloc(cmap->map.max_entries * sizeof(struct bpf_cpu_map_entry *), cmap->map.numa_node); if (!cmap->cpu_map) - goto free_charge; + goto free_cmap; return &cmap->map; -free_charge: - bpf_map_charge_finish(&cmap->map.memory); free_cmap: kfree(cmap); return ERR_PTR(err);
Do not use rlimit-based memory accounting for cpumap maps. It has been replaced with the memcg-based memory accounting. Signed-off-by: Roman Gushchin <guro@fb.com> --- kernel/bpf/cpumap.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-)