Messages in this thread Patch in this message | | | From | Norbert Manthey <> | Subject | [less-CONFIG_NET v2 6/8] bpf: avoid duplicate definitions | Date | Thu, 28 Jun 2018 14:45:34 +0200 |
| |
With the aim of making CONFIG_SECCOMP_FILTER independent of CONFIG_NET, some bpf functions are not required to provide net functionality, as already implemented in the header include/linux/bpf.h. However, the source files assumed to be only included if CONFIG_NET is activated.
To be able to include the source files while CONFIG_NET is disabled, make sure the functions defined in the header include/linux/bpf.h are not included in the source file.
To reduce the amount of #ifdef CONFIG_NET guards, the position of the functions __bpf_map_offload_destroy and bpf_map_offload_map_alloc has been swapped.
Signed-off-by: Norbert Manthey <nmanthey@amazon.de> --- kernel/bpf/offload.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/kernel/bpf/offload.c b/kernel/bpf/offload.c index ac747d5..7042dbe 100644 --- a/kernel/bpf/offload.c +++ b/kernel/bpf/offload.c @@ -32,6 +32,7 @@ static DECLARE_RWSEM(bpf_devs_lock); static LIST_HEAD(bpf_prog_offload_devs); static LIST_HEAD(bpf_map_offload_devs); +#ifdef CONFIG_NET static int bpf_dev_offload_check(struct net_device *netdev) { if (!netdev) @@ -84,6 +85,7 @@ int bpf_prog_offload_init(struct bpf_prog *prog, union bpf_attr *attr) kfree(offload); return err; } +#endif // CONFIG_NET static int __bpf_offload_ndo(struct bpf_prog *prog, enum bpf_netdev_command cmd, struct netdev_bpf *data) @@ -291,6 +293,16 @@ static int bpf_map_offload_ndo(struct bpf_offloaded_map *offmap, return netdev->netdev_ops->ndo_bpf(netdev, &data); } +static void __bpf_map_offload_destroy(struct bpf_offloaded_map *offmap) +{ + WARN_ON(bpf_map_offload_ndo(offmap, BPF_OFFLOAD_MAP_FREE)); + /* Make sure BPF_MAP_GET_NEXT_ID can't find this dead map */ + bpf_map_free_id(&offmap->map, true); + list_del_init(&offmap->offloads); + offmap->netdev = NULL; +} + +#ifdef CONFIG_NET struct bpf_map *bpf_map_offload_map_alloc(union bpf_attr *attr) { struct net *net = current->nsproxy->net_ns; @@ -333,15 +345,6 @@ struct bpf_map *bpf_map_offload_map_alloc(union bpf_attr *attr) return ERR_PTR(err); } -static void __bpf_map_offload_destroy(struct bpf_offloaded_map *offmap) -{ - WARN_ON(bpf_map_offload_ndo(offmap, BPF_OFFLOAD_MAP_FREE)); - /* Make sure BPF_MAP_GET_NEXT_ID can't find this dead map */ - bpf_map_free_id(&offmap->map, true); - list_del_init(&offmap->offloads); - offmap->netdev = NULL; -} - void bpf_map_offload_map_free(struct bpf_map *map) { struct bpf_offloaded_map *offmap = map_to_offmap(map); @@ -355,6 +358,7 @@ void bpf_map_offload_map_free(struct bpf_map *map) kfree(offmap); } +#endif // CONFIG_NET int bpf_map_offload_lookup_elem(struct bpf_map *map, void *key, void *value) { -- 2.7.4 Amazon Development Center Germany GmbH Berlin - Dresden - Aachen main office: Krausenstr. 38, 10117 Berlin Geschaeftsfuehrer: Dr. Ralf Herbrich, Christian Schlaeger Ust-ID: DE289237879 Eingetragen am Amtsgericht Charlottenburg HRB 149173 B
| |