On Wed, Oct 04, 2017 at 02:03:45PM +0200, Jesper Dangaard Brouer wrote:
> The 'cpumap' is primary used as a backend map for XDP BPF helper
> call bpf_redirect_map() and XDP_REDIRECT action, like 'devmap'.
> 
> This patch implement the main part of the map.  It is not connected to
> the XDP redirect system yet, and no SKB allocation are done yet.
> 
> The main concern in this patch is to ensure the datapath can run
> without any locking.  This adds complexity to the setup and tear-down
> procedure, which assumptions are extra carefully documented in the
> code comments.
> 
> V2:
>  - make sure array isn't larger than NR_CPUS
>  - make sure CPUs added is a valid possible CPU
> 
> V3: fix nitpicks from Jakub Kicinski <kubak...@wp.pl>
> 
> Signed-off-by: Jesper Dangaard Brouer <bro...@redhat.com>
...
> +static struct bpf_map *cpu_map_alloc(union bpf_attr *attr)
> +{
> +     struct bpf_cpu_map *cmap;
> +     u64 cost;
> +     int err;
> +
> +     /* check sanity of attributes */
> +     if (attr->max_entries == 0 || attr->key_size != 4 ||
> +         attr->value_size != 4 || attr->map_flags & ~BPF_F_NUMA_NODE)
> +             return ERR_PTR(-EINVAL);
> +
> +     cmap = kzalloc(sizeof(*cmap), GFP_USER);
> +     if (!cmap)
> +             return ERR_PTR(-ENOMEM);

just noticed that there is nothing here nor in DEVMAP/SOCKMAP
that prevents unpriv user to create them.
I'm not sure it was intentional for DEVMAP/SOCKMAP.
For CPUMAP I'd suggest to restrict it to root, since it
suppose to operate with XDP only which is root anyway.
Note, lpm and lru maps are cap_sys_admin only already.

Reply via email to