lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ