Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> writes: > On Tue, Aug 27, 2024 at 5:48 AM Leon Hwang <leon.hwang@xxxxxxxxx> wrote: >> >> > I wonder if disallowing to freplace programs when >> > replacement.tail_call_reachable != replaced.tail_call_reachable >> > would be a better option? >> > >> >> This idea is wonderful. >> >> We can disallow attaching tail_call_reachable freplace prog to >> not-tail_call_reachable bpf prog. So, the following 3 cases are allowed. >> >> 1. attach tail_call_reachable freplace prog to tail_call_reachable bpf prog. >> 2. attach not-tail_call_reachable freplace prog to tail_call_reachable >> bpf prog. >> 3. attach not-tail_call_reachable freplace prog to >> not-tail_call_reachable bpf prog. > > I think it's fine to disable freplace and tail_call combination > altogether. In the libxdp dispatcher we rely on the fact that an freplace program is equivalent to a directly attached XDP program. And we've definitely seen people using tail calls along with the libxdp dispatcher (e.g., https://github.com/xdp-project/xdp-tools/issues/377), so I don't think it's a good idea to disable it entirely. I think restricting the combinations should be fine, though - the libxdp dispatcher will not end up in a tail call map unless someone is going out of their way to do weird things :) -Toke