aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/sock_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/sock_map.c')
-rw-r--r--net/core/sock_map.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/net/core/sock_map.c b/net/core/sock_map.c
index be6092ac69f8..52d4faeee18b 100644
--- a/net/core/sock_map.c
+++ b/net/core/sock_map.c
@@ -44,13 +44,7 @@ static struct bpf_map *sock_map_alloc(union bpf_attr *attr)
44 44
45 /* Make sure page count doesn't overflow. */ 45 /* Make sure page count doesn't overflow. */
46 cost = (u64) stab->map.max_entries * sizeof(struct sock *); 46 cost = (u64) stab->map.max_entries * sizeof(struct sock *);
47 if (cost >= U32_MAX - PAGE_SIZE) { 47 err = bpf_map_charge_init(&stab->map.memory, cost);
48 err = -EINVAL;
49 goto free_stab;
50 }
51
52 stab->map.pages = round_up(cost, PAGE_SIZE) >> PAGE_SHIFT;
53 err = bpf_map_precharge_memlock(stab->map.pages);
54 if (err) 48 if (err)
55 goto free_stab; 49 goto free_stab;
56 50
@@ -60,6 +54,7 @@ static struct bpf_map *sock_map_alloc(union bpf_attr *attr)
60 if (stab->sks) 54 if (stab->sks)
61 return &stab->map; 55 return &stab->map;
62 err = -ENOMEM; 56 err = -ENOMEM;
57 bpf_map_charge_finish(&stab->map.memory);
63free_stab: 58free_stab:
64 kfree(stab); 59 kfree(stab);
65 return ERR_PTR(err); 60 return ERR_PTR(err);