Allocates memory after map creation, then we can use the generic helper
bpf_map_kzalloc() instead of the open-coded kzalloc().
Signed-off-by: Yafang Shao <redacted>
---
kernel/bpf/arraymap.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c
index dd79d0d..7f1766c 100644
--- a/kernel/bpf/arraymap.c
+++ b/kernel/bpf/arraymap.c
@@ -1111,20 +1111,20 @@ static struct bpf_map *prog_array_map_alloc(union bpf_attr *attr)
struct bpf_array_aux *aux;
struct bpf_map *map;
- aux = kzalloc(sizeof(*aux), GFP_KERNEL_ACCOUNT);
- if (!aux)
+ map = array_map_alloc(attr);
+ if (IS_ERR(map))
return ERR_PTR(-ENOMEM);
+ aux = bpf_map_kzalloc(map, sizeof(*aux), GFP_KERNEL);
+ if (!aux) {
+ array_map_free(map);
+ return ERR_PTR(-ENOMEM);
+ }
+
INIT_WORK(&aux->work, prog_array_map_clear_deferred);
INIT_LIST_HEAD(&aux->poke_progs);
mutex_init(&aux->poke_mutex);
- map = array_map_alloc(attr);
- if (IS_ERR(map)) {
- kfree(aux);
- return map;
- }
-
container_of(map, struct bpf_array, map)->aux = aux;
aux->map = map;
--
1.8.3.1