Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > - if (!emit(p, BPF_EMIT_CALL(nf_hook_slow))) > > + if (!emit(p, BPF_EMIT_CALL(nf_hook_slow_bpf))) > > > > ? > > > > If yes, I don't see how this will work for the case where I only have an > > address, i.e.: > > > > if (!emit(p, BPF_EMIT_CALL(h->hook))) .... > > > > (Also, the address might be in a kernel module) > > > > > On x86-64 it will be a nop. > > > On x86-32 it will do quite a bit of work. > > > > If this only a problem for 32bit arches, I could also make this > > 'depends on CONFIG_64BIT'. > > If that's acceptable, sure. Good, thanks! > > But perhaps I am on the wrong track, I see existing code doing: > > *insn++ = BPF_EMIT_CALL(__htab_map_lookup_elem); > > Yes, because we do: > /* BPF_EMIT_CALL() assumptions in some of the map_gen_lookup > * and other inlining handlers are currently limited to 64 bit > * only. > */ > if (prog->jit_requested && BITS_PER_LONG == 64 && Ah, thanks, makes sense. > I think you already gate this feature with jit_requested? > Otherwise it's going to be slow in the interpreter. Right, use of bpf interpreter is silly for this. > > 39: unspec tag 0000000000000000 > > xlated 416B jited 221B memlock 4096B > > Probably should do bpf_prog_calc_tag() too. > And please give it some meaningful name. Agree, will add this.