bpf, x86: Fix objtool warning for timed may_goto
authorKumar Kartikeya Dwivedi <memxor@gmail.com>
Sat, 15 Mar 2025 01:30:39 +0000 (18:30 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sat, 15 Mar 2025 22:55:14 +0000 (15:55 -0700)
Kernel test robot reported "call without frame pointer save/setup"
warning in objtool. This will make stack traces unreliable on
CONFIG_UNWINDER_FRAME_POINTER=y, however it works on
CONFIG_UNWINDER_ORC=y. Fix this by creating a stack frame for the
function.

Fixes: 2fb761823ead ("bpf, x86: Add x86 JIT support for timed may_goto")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202503071350.QOhsHVaW-lkp@intel.com/
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20250315013039.1625048-1-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/x86/net/bpf_timed_may_goto.S

index 20de4a14dc4cf24f3d548753e289e47de5c01b05..54c690cae190879d1b6884bce6dab674a28f2af3 100644 (file)
 SYM_FUNC_START(arch_bpf_timed_may_goto)
        ANNOTATE_NOENDBR
 
+       /*
+        * r10 passes us stack depth, load the pointer to count and timestamp
+        * into r10 by adding it to BPF frame pointer.
+        */
+       leaq (%rbp, %r10, 1), %r10
+
+       /* Setup frame. */
+       pushq %rbp
+       movq %rsp, %rbp
+
        /* Save r0-r5. */
        pushq %rax
        pushq %rdi
@@ -20,10 +30,10 @@ SYM_FUNC_START(arch_bpf_timed_may_goto)
        pushq %r8
 
        /*
-        * r10 passes us stack depth, load the pointer to count and timestamp as
-        * first argument to the call below.
+        * r10 has the pointer to count and timestamp, pass it as first
+        * argument.
         */
-       leaq (%rbp, %r10, 1), %rdi
+       movq %r10, %rdi
 
        /* Emit call depth accounting for call below. */
        CALL_DEPTH_ACCOUNT
@@ -40,5 +50,6 @@ SYM_FUNC_START(arch_bpf_timed_may_goto)
        popq %rdi
        popq %rax
 
+       leave
        RET
 SYM_FUNC_END(arch_bpf_timed_may_goto)