Messages in this thread | | | From | Chris Ward <> | Date | Mon, 23 Jan 2023 11:06:43 +0000 | Subject | eBPF verifier does not load libxdp dispatcher eBPF program |
| |
I am trying to use the 'bleeding edge' kernel to determine whether a problem I see has already been fixed, but with this kernel the eBPF verifier will not load the dispatcher program that is contained within libxdp. I am testing kernel commit hash 2475bf0 which fails, and the kernel in Ubuntu 22.04 (5.15.0-58-generic) works properly. I am running the test case from https://github.com/tjcw/bpf-examples/tree/tjcw-explore-sameeth ; to build it go to the AF_XDP-filter directory and type 'make', and to run it go to the AF_XDP-filter/runscripts/iperf3-namespace directory and type 'sudo FILTER=af_xdp_kern PORT=50000 ./run.sh' . The lines from the run output indicating the failure are libbpf: prog 'xdp_dispatcher': BPF program load failed: Invalid argument libbpf: prog 'xdp_dispatcher': -- BEGIN PROG LOAD LOG -- Func#11 is safe for any args that match its prototype btf_vmlinux is malformed reg type unsupported for arg#0 function xdp_dispatcher#29 0: R1=ctx(off=0,imm=0) R10=fp0 ; int xdp_dispatcher(struct xdp_md *ctx) 0: (bf) r6 = r1 ; R1=ctx(off=0,imm=0) R6_w=ctx(off=0,imm=0) 1: (b7) r0 = 2 ; R0_w=2 ; __u8 num_progs_enabled = conf.num_progs_enabled; 2: (18) r8 = 0xffffb2f6c06d8000 ; R8_w=map_value(off=0,ks=4,vs=84,imm=0) 4: (71) r7 = *(u8 *)(r8 +0) ; R7=1 R8=map_value(off=0,ks=4,vs=84,imm=0) ; if (num_progs_enabled < 1) 5: (15) if r7 == 0x0 goto pc+141 ; R7=1 ; ret = prog0(ctx); 6: (bf) r1 = r6 ; R1_w=ctx(off=0,imm=0) R6=ctx(off=0,imm=0) 7: (85) call pc+140 btf_vmlinux is malformed R1 type=ctx expected=fp Caller passes invalid args into func#1 processed 84 insns (limit 1000000) max_states_per_insn 0 total_states 9 peak_states 9 mark_read 1 -- END PROG LOAD LOG -- libbpf: prog 'xdp_dispatcher': failed to load: -22 libbpf: failed to load object 'xdp-dispatcher.o' libxdp: Failed to load dispatcher: Invalid argument libxdp: Falling back to loading single prog without dispatcher
Can this regression be fixed before kernel 6.2 ships ?
| |