[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20250204181902.dd6e02416ff5eeec3ea47a79@kernel.org>
Date: Tue, 4 Feb 2025 18:19:02 +0900
From: Masami Hiramatsu (Google) <mhiramat@...nel.org>
To: Gabriel de Perthuis <g2p.code@...il.com>
Cc: Steven Rostedt <rostedt@...dmis.org>,
linux-trace-kernel@...r.kernel.org, LKML <linux-kernel@...r.kernel.org>,
Martin KaFai Lau <martin.lau@...ux.dev>, bpf <bpf@...r.kernel.org>, Alexei
Starovoitov <ast@...nel.org>, Jiri Olsa <jolsa@...nel.org>, Alan Maguire
<alan.maguire@...cle.com>, Mark Rutland <mark.rutland@....com>,
linux-arch@...r.kernel.org, kernel test robot <lkp@...el.com>, Florent
Revest <revest@...omium.org>, Alexei Starovoitov
<alexei.starovoitov@...il.com>
Subject: Re: [PATCH v22 19/20] ftrace: Add ftrace_get_symaddr to convert
fentry_ip to symaddr
On Mon, 3 Feb 2025 22:33:48 +0100
Gabriel de Perthuis <g2p.code@...il.com> wrote:
> Hello,
>
> I got errors building Linux 6.14-rc1 that were solved by reverting this
> patch and the one after (19/20 and 20/20).
>
> Errors look like:
>
> In file included from ./arch/x86/include/asm/asm-prototypes.h:2,
> from <stdin>:3:
> ./arch/x86/include/asm/ftrace.h: In function 'arch_ftrace_get_symaddr':
> ./arch/x86/include/asm/ftrace.h:46:21: error: implicit declaration of
> function 'get_kernel_nofault' [-Wimplicit-function-declaration]
> 46 | if (get_kernel_nofault(instr, (u32 *)(fentry_ip
> - ENDBR_INSN_SIZE)))
> | ^~~~~~~~~~~~~~~~~~
>
> Will send .config on request if needed.
Thanks for the report!
-------<arch/x86/include/asm/asm-prototypes.h>
/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/ftrace.h>
#include <linux/uaccess.h>
-----
Ah, that's why... get_kernel_nofault() is defined in linux/uaccess.h.
I also found that is_endbr() is in asm/ibt.h.
Can you try this?
Thank you,
diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h
index f9cb4d07df58..d24d7c71253f 100644
--- a/arch/x86/include/asm/ftrace.h
+++ b/arch/x86/include/asm/ftrace.h
@@ -16,24 +16,9 @@
# include <asm/ibt.h>
/* Add offset for endbr64 if IBT enabled */
# define FTRACE_MCOUNT_MAX_OFFSET ENDBR_INSN_SIZE
-#endif
-
-#ifdef CONFIG_DYNAMIC_FTRACE
-#define ARCH_SUPPORTS_FTRACE_OPS 1
-#endif
-
-#ifndef __ASSEMBLY__
-extern void __fentry__(void);
-
-static inline unsigned long ftrace_call_adjust(unsigned long addr)
-{
- /*
- * addr is the address of the mcount call instruction.
- * recordmcount does the necessary offset calculation.
- */
- return addr;
-}
+#include <linux/uaccess.h>
+/* This only supports fentry based ftrace. */
static inline unsigned long arch_ftrace_get_symaddr(unsigned long fentry_ip)
{
#ifdef CONFIG_X86_KERNEL_IBT
@@ -55,6 +40,24 @@ static inline unsigned long arch_ftrace_get_symaddr(unsigned long fentry_ip)
}
#define ftrace_get_symaddr(fentry_ip) arch_ftrace_get_symaddr(fentry_ip)
+#endif
+
+#ifdef CONFIG_DYNAMIC_FTRACE
+#define ARCH_SUPPORTS_FTRACE_OPS 1
+#endif
+
+#ifndef __ASSEMBLY__
+extern void __fentry__(void);
+
+static inline unsigned long ftrace_call_adjust(unsigned long addr)
+{
+ /*
+ * addr is the address of the mcount call instruction.
+ * recordmcount does the necessary offset calculation.
+ */
+ return addr;
+}
+
#ifdef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
#include <linux/ftrace_regs.h>
--
Masami Hiramatsu (Google) <mhiramat@...nel.org>
Powered by blists - more mailing lists