From: Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> Date: Sat, 22 Apr 2017 08:32:35 -0700 > On Fri, Apr 21, 2017 at 08:17:11PM -0700, David Miller wrote: >> >> This is an eBPF JIT for sparc64. All major features are supported. >> >> All tests under tools/testing/selftests/bpf/ pass. >> >> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> > ... >> + /* tail call */ >> + case BPF_JMP | BPF_CALL |BPF_X: >> + emit_tail_call(ctx); >> + > > I think 'break;' is missing here. Good catch, I'll fix that. > When tail_call's target program is null the current program should > continue instead of aborting. > Like in our current ddos+lb setup the program looks like: > bpf_tail_call(ctx, &prog_array, 1); > bpf_tail_call(ctx, &prog_array, 2); > bpf_tail_call(ctx, &prog_array, 3); > return XDP_DROP; > > this way it will jump into the program that is installed in slot 1. > If it's empty, it will try slot 2... > If no programs installed it will drop the packet. Yes, with the break; fixed above that's what the sparc64 JIT will end up doing. If any of the tests don't pass in emit_tail_call() we branch to the end of the emit_tail_call() sequence. Thanks. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html