2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/arch/x86/net/bpf_timed_may_goto.S
Kumar Kartikeya Dwivedi 812f7702d8 bpf, x86: Fix objtool warning for timed may_goto
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: 2fb761823e ("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>
2025-03-15 15:55:14 -07:00

56 lines
1014 B
ArmAsm

// SPDX-License-Identifier: GPL-2.0
/* Copyright (c) 2025 Meta Platforms, Inc. and affiliates. */
#include <linux/export.h>
#include <linux/linkage.h>
#include <asm/nospec-branch.h>
.code64
.section .text, "ax"
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
pushq %rsi
pushq %rdx
pushq %rcx
pushq %r8
/*
* r10 has the pointer to count and timestamp, pass it as first
* argument.
*/
movq %r10, %rdi
/* Emit call depth accounting for call below. */
CALL_DEPTH_ACCOUNT
call bpf_check_timed_may_goto
/* BPF_REG_AX=r10 will be stored into count, so move return value to it. */
movq %rax, %r10
/* Restore r5-r0. */
popq %r8
popq %rcx
popq %rdx
popq %rsi
popq %rdi
popq %rax
leave
RET
SYM_FUNC_END(arch_bpf_timed_may_goto)