@@ -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;
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 <laoar.shao@gmail.com> --- kernel/bpf/arraymap.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)