]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ftrace: Make ftrace_regs abstract from direct use
authorSteven Rostedt <rostedt@goodmis.org>
Tue, 8 Oct 2024 23:05:28 +0000 (19:05 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Fri, 11 Oct 2024 00:18:01 +0000 (20:18 -0400)
commit7888af4166d4ab07ba51234be6ba332b7807e901
treee63e27446a8f74c2211e6f61222ba0440bfe92dd
parentc73eb02a4781aee53ee4122132967356361e4f1a
ftrace: Make ftrace_regs abstract from direct use

ftrace_regs was created to hold registers that store information to save
function parameters, return value and stack. Since it is a subset of
pt_regs, it should only be used by its accessor functions. But because
pt_regs can easily be taken from ftrace_regs (on most archs), it is
tempting to use it directly. But when running on other architectures, it
may fail to build or worse, build but crash the kernel!

Instead, make struct ftrace_regs an empty structure and have the
architectures define __arch_ftrace_regs and all the accessor functions
will typecast to it to get to the actual fields. This will help avoid
usage of ftrace_regs directly.

Link: https://lore.kernel.org/all/20241007171027.629bdafd@gandalf.local.home/
Cc: "linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>
Cc: "x86@kernel.org" <x86@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Huacai Chen <chenhuacai@kernel.org>
Cc: WANG Xuerui <kernel@xen0n.name>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Naveen N Rao <naveen@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://lore.kernel.org/20241008230628.958778821@goodmis.org
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Acked-by: Heiko Carstens <hca@linux.ibm.com> # s390
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
19 files changed:
arch/arm64/include/asm/ftrace.h
arch/arm64/kernel/asm-offsets.c
arch/arm64/kernel/ftrace.c
arch/loongarch/include/asm/ftrace.h
arch/loongarch/kernel/ftrace_dyn.c
arch/powerpc/include/asm/ftrace.h
arch/powerpc/kernel/trace/ftrace.c
arch/powerpc/kernel/trace/ftrace_64_pg.c
arch/riscv/include/asm/ftrace.h
arch/riscv/kernel/asm-offsets.c
arch/riscv/kernel/ftrace.c
arch/s390/include/asm/ftrace.h
arch/s390/kernel/asm-offsets.c
arch/s390/kernel/ftrace.c
arch/s390/lib/test_unwind.c
arch/x86/include/asm/ftrace.h
arch/x86/kernel/ftrace.c
include/linux/ftrace.h
kernel/trace/ftrace.c