diff options
Diffstat (limited to 'kernel/bpf/lpm_trie.c')
-rw-r--r-- | kernel/bpf/lpm_trie.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/kernel/bpf/lpm_trie.c b/kernel/bpf/lpm_trie.c index e61630c2e50b..09334f13a8a0 100644 --- a/kernel/bpf/lpm_trie.c +++ b/kernel/bpf/lpm_trie.c | |||
@@ -573,14 +573,8 @@ static struct bpf_map *trie_alloc(union bpf_attr *attr) | |||
573 | cost_per_node = sizeof(struct lpm_trie_node) + | 573 | cost_per_node = sizeof(struct lpm_trie_node) + |
574 | attr->value_size + trie->data_size; | 574 | attr->value_size + trie->data_size; |
575 | cost += (u64) attr->max_entries * cost_per_node; | 575 | cost += (u64) attr->max_entries * cost_per_node; |
576 | if (cost >= U32_MAX - PAGE_SIZE) { | ||
577 | ret = -E2BIG; | ||
578 | goto out_err; | ||
579 | } | ||
580 | |||
581 | trie->map.pages = round_up(cost, PAGE_SIZE) >> PAGE_SHIFT; | ||
582 | 576 | ||
583 | ret = bpf_map_precharge_memlock(trie->map.pages); | 577 | ret = bpf_map_charge_init(&trie->map.memory, cost); |
584 | if (ret) | 578 | if (ret) |
585 | goto out_err; | 579 | goto out_err; |
586 | 580 | ||