summaryrefslogtreecommitdiffstats
path: root/kernel/bpf
diff options
context:
space:
mode:
authorQuentin Monnet2018-11-09 14:03:29 +0100
committerAlexei Starovoitov2018-11-11 00:39:54 +0100
commitb07ade27e93360197e453e5ca80eebdc9099dcb5 (patch)
tree051fca57e0151f163c9c061634065baa9625fea9 /kernel/bpf
parentbpf: call verifier_prep from its callback in struct bpf_offload_dev (diff)
downloadkernel-qcow2-linux-b07ade27e93360197e453e5ca80eebdc9099dcb5.tar.gz
kernel-qcow2-linux-b07ade27e93360197e453e5ca80eebdc9099dcb5.tar.xz
kernel-qcow2-linux-b07ade27e93360197e453e5ca80eebdc9099dcb5.zip
bpf: pass translate() as a callback and remove its ndo_bpf subcommand
As part of the transition from ndo_bpf() to callbacks attached to struct bpf_offload_dev for some of the eBPF offload operations, move the functions related to code translation to the struct and remove the subcommand that was used to call them through the NDO. Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel/bpf')
-rw-r--r--kernel/bpf/offload.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/kernel/bpf/offload.c b/kernel/bpf/offload.c
index 1f7ac00a494d..ae0167366c12 100644
--- a/kernel/bpf/offload.c
+++ b/kernel/bpf/offload.c
@@ -219,14 +219,14 @@ void bpf_prog_offload_destroy(struct bpf_prog *prog)
static int bpf_prog_offload_translate(struct bpf_prog *prog)
{
- struct netdev_bpf data = {};
- int ret;
-
- data.offload.prog = prog;
+ struct bpf_prog_offload *offload;
+ int ret = -ENODEV;
- rtnl_lock();
- ret = __bpf_offload_ndo(prog, BPF_OFFLOAD_TRANSLATE, &data);
- rtnl_unlock();
+ down_read(&bpf_devs_lock);
+ offload = prog->aux->offload;
+ if (offload)
+ ret = offload->offdev->ops->translate(offload->netdev, prog);
+ up_read(&bpf_devs_lock);
return ret;
}