Message ID | 20210117225427.29658-1-bluca@debian.org |
---|---|
State | New |
Headers | show |
Series | [iproute2,1/2] vrf: print BPF log buffer if bpf_program_load fails | expand |
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>
On 1/17/21 3:54 PM, Luca Boccassi wrote: > Necessary to understand what is going on when bpf_program_load fails > > Signed-off-by: Luca Boccassi <bluca@debian.org> > --- > ip/ipvrf.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > Reviewed-by: David Ahern <dsahern@kernel.org>
diff --git a/ip/ipvrf.c b/ip/ipvrf.c index 42779e5c..91578031 100644 --- a/ip/ipvrf.c +++ b/ip/ipvrf.c @@ -278,8 +278,8 @@ static int vrf_configure_cgroup(const char *path, int ifindex) */ prog_fd = prog_load(ifindex); if (prog_fd < 0) { - fprintf(stderr, "Failed to load BPF prog: '%s'\n", - strerror(errno)); + fprintf(stderr, "Failed to load BPF prog: '%s'\n%s", + strerror(errno), bpf_log_buf); if (errno != EPERM) { fprintf(stderr,
Necessary to understand what is going on when bpf_program_load fails Signed-off-by: Luca Boccassi <bluca@debian.org> --- ip/ipvrf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)