bpf: Eliminate rlimit-based memory accounting for lpm_trie maps
Do not use rlimit-based memory accounting for lpm_trie maps. It has been replaced with the memcg-based memory accounting. Signed-off-by: Roman Gushchin <guro@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Song Liu <songliubraving@fb.com> Link: https://lore.kernel.org/bpf/20201201215900.3569844-25-guro@fb.com
This commit is contained in:
parent
755e5d5536
commit
cbddcb574d
|
@ -540,8 +540,6 @@ out:
|
||||||
static struct bpf_map *trie_alloc(union bpf_attr *attr)
|
static struct bpf_map *trie_alloc(union bpf_attr *attr)
|
||||||
{
|
{
|
||||||
struct lpm_trie *trie;
|
struct lpm_trie *trie;
|
||||||
u64 cost = sizeof(*trie), cost_per_node;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (!bpf_capable())
|
if (!bpf_capable())
|
||||||
return ERR_PTR(-EPERM);
|
return ERR_PTR(-EPERM);
|
||||||
|
@ -567,20 +565,9 @@ static struct bpf_map *trie_alloc(union bpf_attr *attr)
|
||||||
offsetof(struct bpf_lpm_trie_key, data);
|
offsetof(struct bpf_lpm_trie_key, data);
|
||||||
trie->max_prefixlen = trie->data_size * 8;
|
trie->max_prefixlen = trie->data_size * 8;
|
||||||
|
|
||||||
cost_per_node = sizeof(struct lpm_trie_node) +
|
|
||||||
attr->value_size + trie->data_size;
|
|
||||||
cost += (u64) attr->max_entries * cost_per_node;
|
|
||||||
|
|
||||||
ret = bpf_map_charge_init(&trie->map.memory, cost);
|
|
||||||
if (ret)
|
|
||||||
goto out_err;
|
|
||||||
|
|
||||||
spin_lock_init(&trie->lock);
|
spin_lock_init(&trie->lock);
|
||||||
|
|
||||||
return &trie->map;
|
return &trie->map;
|
||||||
out_err:
|
|
||||||
kfree(trie);
|
|
||||||
return ERR_PTR(ret);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void trie_free(struct bpf_map *map)
|
static void trie_free(struct bpf_map *map)
|
||||||
|
|
Loading…
Reference in New Issue