bpf, x64: Comment tail_call_cnt initialisation
authorLeon Hwang <hffilwlqm@gmail.com>
Tue, 12 Sep 2023 15:04:40 +0000 (23:04 +0800)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 12 Sep 2023 20:06:12 +0000 (13:06 -0700)
Without understanding emit_prologue(), it is really hard to figure out
where does tail_call_cnt come from, even though searching tail_call_cnt
in the whole kernel repo.

By adding these comments, it is a little bit easier to understand
tail_call_cnt initialisation.

Signed-off-by: Leon Hwang <hffilwlqm@gmail.com>
Link: https://lore.kernel.org/r/20230912150442.2009-2-hffilwlqm@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/x86/net/bpf_jit_comp.c

index a5930042139d3b3738fbb5362b5199dc723c7991..bcca1c9b9a027c5a7472760309e8e28e1920c5b1 100644 (file)
@@ -303,8 +303,12 @@ static void emit_prologue(u8 **pprog, u32 stack_depth, bool ebpf_from_cbpf,
        prog += X86_PATCH_SIZE;
        if (!ebpf_from_cbpf) {
                if (tail_call_reachable && !is_subprog)
+                       /* When it's the entry of the whole tailcall context,
+                        * zeroing rax means initialising tail_call_cnt.
+                        */
                        EMIT2(0x31, 0xC0); /* xor eax, eax */
                else
+                       /* Keep the same instruction layout. */
                        EMIT2(0x66, 0x90); /* nop2 */
        }
        EMIT1(0x55);             /* push rbp */