diff options
Diffstat (limited to 'kernel/bpf/devmap.c')
-rw-r--r-- | kernel/bpf/devmap.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/kernel/bpf/devmap.c b/kernel/bpf/devmap.c index 371bd880ed58..5ae7cce5ef16 100644 --- a/kernel/bpf/devmap.c +++ b/kernel/bpf/devmap.c | |||
@@ -108,12 +108,9 @@ static struct bpf_map *dev_map_alloc(union bpf_attr *attr) | |||
108 | /* make sure page count doesn't overflow */ | 108 | /* make sure page count doesn't overflow */ |
109 | cost = (u64) dtab->map.max_entries * sizeof(struct bpf_dtab_netdev *); | 109 | cost = (u64) dtab->map.max_entries * sizeof(struct bpf_dtab_netdev *); |
110 | cost += dev_map_bitmap_size(attr) * num_possible_cpus(); | 110 | cost += dev_map_bitmap_size(attr) * num_possible_cpus(); |
111 | if (cost >= U32_MAX - PAGE_SIZE) | ||
112 | goto free_dtab; | ||
113 | 111 | ||
114 | /* if map size is larger than memlock limit, reject it */ | 112 | /* if map size is larger than memlock limit, reject it */ |
115 | err = bpf_map_charge_init(&dtab->map.memory, | 113 | err = bpf_map_charge_init(&dtab->map.memory, cost); |
116 | round_up(cost, PAGE_SIZE) >> PAGE_SHIFT); | ||
117 | if (err) | 114 | if (err) |
118 | goto free_dtab; | 115 | goto free_dtab; |
119 | 116 | ||