lkml.org 
[lkml]   [2020]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH bpf-next v7 23/34] bpf: eliminate rlimit-based memory accounting for hashtab maps
    Date
    Do not use rlimit-based memory accounting for hashtab 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/hashtab.c | 19 +------------------
    1 file changed, 1 insertion(+), 18 deletions(-)

    diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c
    index 2b8bbdbec872..eed12427ddd5 100644
    --- a/kernel/bpf/hashtab.c
    +++ b/kernel/bpf/hashtab.c
    @@ -443,7 +443,6 @@ static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
    bool prealloc = !(attr->map_flags & BPF_F_NO_PREALLOC);
    struct bpf_htab *htab;
    int err, i;
    - u64 cost;

    htab = kzalloc(sizeof(*htab), GFP_USER | __GFP_ACCOUNT);
    if (!htab)
    @@ -481,26 +480,12 @@ static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
    htab->n_buckets > U32_MAX / sizeof(struct bucket))
    goto free_htab;

    - cost = (u64) htab->n_buckets * sizeof(struct bucket) +
    - (u64) htab->elem_size * htab->map.max_entries;
    -
    - if (percpu)
    - cost += (u64) round_up(htab->map.value_size, 8) *
    - num_possible_cpus() * htab->map.max_entries;
    - else
    - cost += (u64) htab->elem_size * num_possible_cpus();
    -
    - /* if map size is larger than memlock limit, reject it */
    - err = bpf_map_charge_init(&htab->map.memory, cost);
    - if (err)
    - goto free_htab;
    -
    err = -ENOMEM;
    htab->buckets = bpf_map_area_alloc(htab->n_buckets *
    sizeof(struct bucket),
    htab->map.numa_node);
    if (!htab->buckets)
    - goto free_charge;
    + goto free_htab;

    for (i = 0; i < HASHTAB_MAP_LOCK_COUNT; i++) {
    htab->map_locked[i] = __alloc_percpu_gfp(sizeof(int),
    @@ -539,8 +524,6 @@ static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
    for (i = 0; i < HASHTAB_MAP_LOCK_COUNT; i++)
    free_percpu(htab->map_locked[i]);
    bpf_map_area_free(htab->buckets);
    -free_charge:
    - bpf_map_charge_finish(&htab->map.memory);
    free_htab:
    lockdep_unregister_key(&htab->lockdep_key);
    kfree(htab);
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-11-19 18:41    [W:4.193 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site