Message ID | 20210117225427.29658-2-bluca@debian.org (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Stephen Hemminger |
Headers | show |
Series | [iproute2,1/2] vrf: print BPF log buffer if bpf_program_load fails | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On 1/17/21 3:54 PM, Luca Boccassi wrote: > The size of bpf_insn is passed to bpf_load_program instead of the number > of elements as it expects, so ip vrf exec fails with: > > $ sudo ip link add vrf-blue type vrf table 10 > $ sudo ip link set dev vrf-blue up > $ sudo ip/ip vrf exec vrf-blue ls > Failed to load BPF prog: 'Invalid argument' > last insn is not an exit or jmp > processed 0 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 > Kernel compiled with CGROUP_BPF enabled? > > https://bugs.debian.org/980046 > > Reported-by: Emmanuel DECAEN <Emmanuel.Decaen@xsalto.com> > > Signed-off-by: Luca Boccassi <bluca@debian.org> > --- > lib/bpf_glue.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > Reviewed-by: David Ahern <dsahern@kernel.org>
diff --git a/lib/bpf_glue.c b/lib/bpf_glue.c index fa609bfe..d00a0dc1 100644 --- a/lib/bpf_glue.c +++ b/lib/bpf_glue.c @@ -14,7 +14,8 @@ int bpf_program_load(enum bpf_prog_type type, const struct bpf_insn *insns, size_t size_log) { #ifdef HAVE_LIBBPF - return bpf_load_program(type, insns, size_insns, license, 0, log, size_log); + return bpf_load_program(type, insns, size_insns / sizeof(struct bpf_insn), + license, 0, log, size_log); #else return bpf_prog_load_dev(type, insns, size_insns, license, 0, log, size_log); #endif
The size of bpf_insn is passed to bpf_load_program instead of the number of elements as it expects, so ip vrf exec fails with: $ sudo ip link add vrf-blue type vrf table 10 $ sudo ip link set dev vrf-blue up $ sudo ip/ip vrf exec vrf-blue ls Failed to load BPF prog: 'Invalid argument' last insn is not an exit or jmp processed 0 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 Kernel compiled with CGROUP_BPF enabled? https://bugs.debian.org/980046 Reported-by: Emmanuel DECAEN <Emmanuel.Decaen@xsalto.com> Signed-off-by: Luca Boccassi <bluca@debian.org> --- lib/bpf_glue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)