Messages in this thread Patch in this message | | | Date | Fri, 28 Apr 2023 09:37:19 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH RFC 21/43] x86/ftrace: Adapt assembly for PIE support |
| |
On Fri, 28 Apr 2023 17:51:01 +0800 "Hou Wenlong" <houwenlong.hwl@antgroup.com> wrote:
> Change the assembly code to use only relative references of symbols for > the kernel to be PIE compatible. > > Signed-off-by: Hou Wenlong <houwenlong.hwl@antgroup.com> > Cc: Thomas Garnier <thgarnie@chromium.org> > Cc: Lai Jiangshan <jiangshan.ljs@antgroup.com> > Cc: Kees Cook <keescook@chromium.org> > --- > arch/x86/kernel/ftrace_64.S | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/ftrace_64.S b/arch/x86/kernel/ftrace_64.S > index eddb4fabc16f..411fa4148e18 100644 > --- a/arch/x86/kernel/ftrace_64.S > +++ b/arch/x86/kernel/ftrace_64.S > @@ -315,7 +315,14 @@ STACK_FRAME_NON_STANDARD_FP(ftrace_regs_caller) > SYM_FUNC_START(__fentry__) > CALL_DEPTH_ACCOUNT > > +#ifdef CONFIG_X86_PIE > + pushq %r8 > + leaq ftrace_stub(%rip), %r8 > + cmpq %r8, ftrace_trace_function(%rip) > + popq %r8 > +#else > cmpq $ftrace_stub, ftrace_trace_function > +#endif > jnz trace > RET > > @@ -329,7 +336,7 @@ trace: > * ip and parent ip are used and the list function is called when > * function tracing is enabled. > */ > - movq ftrace_trace_function, %r8 > + movq ftrace_trace_function(%rip), %r8 > CALL_NOSPEC r8 > restore_mcount_regs >
I really don't want to add more updates to !DYNAMIC_FTRACE. This code only exists to make sure I don't break it for other architectures.
How about
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 442eccc00960..ee4d0713139d 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -37,7 +37,7 @@ config X86_64 config FORCE_DYNAMIC_FTRACE def_bool y - depends on X86_32 + depends on X86_32 || X86_PIE depends on FUNCTION_TRACER select DYNAMIC_FTRACE help
?
-- Steve
| |