diff mbox series

[iproute2,1/2] vrf: print BPF log buffer if bpf_program_load fails

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

Commit Message

Luca Boccassi Jan. 17, 2021, 10:54 p.m. UTC
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(-)

Comments

David Ahern Jan. 18, 2021, 3:53 a.m. UTC | #1
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>
David Ahern Jan. 18, 2021, 3:53 a.m. UTC | #2
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 mbox series

Patch

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,