On Mon, Oct 16, 2017 at 12:19 PM, Jesper Dangaard Brouer
<bro...@redhat.com> wrote:
> +
> +       /* Notice returns -EPERM on if map size is larger than memlock limit 
> */
> +       ret = bpf_map_precharge_memlock(cmap->map.pages);
> +       if (ret) {
> +               err = ret;
> +               goto free_cmap;
> +       }
> +
> +       /* A per cpu bitfield with a bit per possible CPU in map  */
> +       cmap->flush_needed = __alloc_percpu(cpu_map_bitmap_size(attr),
> +                                           __alignof__(unsigned long));
> +       if (!cmap->flush_needed)
> +               goto free_cmap;
> +
> +       /* Alloc array for possible remote "destination" CPUs */
> +       cmap->cpu_map = bpf_map_area_alloc(cmap->map.max_entries *
> +                                          sizeof(struct bpf_cpu_map_entry *),
> +                                          cmap->map.numa_node);
> +       if (!cmap->cpu_map)

ret = -ENOMEM; ?

> +               goto free_percpu;
> +
> +       return &cmap->map;
> +free_percpu:
> +       free_percpu(cmap->flush_needed);
> +free_cmap:
> +       kfree(cmap);
> +       return ERR_PTR(err);
> +}


Regards,
Yann.

Reply via email to