From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Jiri Olsa <jolsa@kernel.org>
Subject: [for-next][PATCH 21/40] x86/ftrace: Remove fault protection code in prepare_ftrace_return
Date: Fri, 22 Oct 2021 16:48:17 -0400 [thread overview]
Message-ID: <20211022204842.018049814@goodmis.org> (raw)
In-Reply-To: 20211022204756.099054287@goodmis.org
From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
Removing the fault protection code when writing return_hooker
to stack. As Steven noted:
> That protection was there from the beginning due to being "paranoid",
> considering ftrace was bricking network cards. But that protection
> would not have even protected against that.
Link: https://lkml.kernel.org/r/20211008091336.33616-3-jolsa@kernel.org
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
arch/x86/kernel/ftrace.c | 38 +++-----------------------------------
1 file changed, 3 insertions(+), 35 deletions(-)
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index 23d221a9a3cd..7f12eacdf1ae 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -620,12 +620,10 @@ int ftrace_disable_ftrace_graph_caller(void)
* Hook the return address and push it in the stack of return addrs
* in current thread info.
*/
-void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent,
+void prepare_ftrace_return(unsigned long ip, unsigned long *parent,
unsigned long frame_pointer)
{
unsigned long return_hooker = (unsigned long)&return_to_handler;
- unsigned long old;
- int faulted;
/*
* When resuming from suspend-to-ram, this function can be indirectly
@@ -645,37 +643,7 @@ void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent,
if (unlikely(atomic_read(¤t->tracing_graph_pause)))
return;
- /*
- * Protect against fault, even if it shouldn't
- * happen. This tool is too much intrusive to
- * ignore such a protection.
- */
- asm volatile(
- "1: " _ASM_MOV " (%[parent]), %[old]\n"
- "2: " _ASM_MOV " %[return_hooker], (%[parent])\n"
- " movl $0, %[faulted]\n"
- "3:\n"
-
- ".section .fixup, \"ax\"\n"
- "4: movl $1, %[faulted]\n"
- " jmp 3b\n"
- ".previous\n"
-
- _ASM_EXTABLE(1b, 4b)
- _ASM_EXTABLE(2b, 4b)
-
- : [old] "=&r" (old), [faulted] "=r" (faulted)
- : [parent] "r" (parent), [return_hooker] "r" (return_hooker)
- : "memory"
- );
-
- if (unlikely(faulted)) {
- ftrace_graph_stop();
- WARN_ON(1);
- return;
- }
-
- if (function_graph_enter(old, self_addr, frame_pointer, parent))
- *parent = old;
+ if (!function_graph_enter(*parent, ip, frame_pointer, parent))
+ *parent = return_hooker;
}
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
--
2.33.0
next prev parent reply other threads:[~2021-10-22 20:49 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-22 20:47 [for-next][PATCH 00/40] tracing: Updates for 5.16 Steven Rostedt
2021-10-22 20:47 ` [for-next][PATCH 01/40] tracing: Initialize upper and lower vars in pid_list_refill_irq() Steven Rostedt
2021-10-22 20:47 ` [for-next][PATCH 02/40] tracefs: Have tracefs directories not set OTH permission bits by default Steven Rostedt
2021-10-22 20:47 ` [for-next][PATCH 03/40] tracing: Disable "other" permission bits in the tracefs files Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 04/40] ftrace: Cleanup ftrace_dyn_arch_init() Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 05/40] bootconfig: Allocate xbc_data inside xbc_init() Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 06/40] bootconfig: Add xbc_get_info() for the node information Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 07/40] tools/bootconfig: Run test script when build all Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 08/40] bootconfig: Rename xbc_destroy_all() to xbc_exit() Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 09/40] bootconfig: Split parse-tree part from xbc_init Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 10/40] bootconfig: Remove unused debug function Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 11/40] tools/bootconfig: Print all error message in stderr Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 12/40] bootconfig: Replace u16 and u32 with uint16_t and uint32_t Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 13/40] bootconfig: Cleanup dummy headers in tools/bootconfig Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 14/40] ftrace: Add unit test for removing trace function Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 15/40] tracing: in_irq() cleanup Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 16/40] tracing: Use linker magic instead of recasting ftrace_ops_list_func() Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 17/40] tracing/cfi: Fix cmp_entries_* functions signature mismatch Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 18/40] tracing: Reuse logic from perfs get_recursion_context() Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 19/40] tracing/perf: Add interrupt_context_level() helper Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 20/40] x86/ftrace: Remove extra orig rax move Steven Rostedt
2021-10-22 20:48 ` Steven Rostedt [this message]
2021-10-22 20:48 ` [for-next][PATCH 22/40] ftrace/x86_64: Have function graph tracer depend on DYNAMIC_FTRACE Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 23/40] x86/ftrace: Make function graph use ftrace directly Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 24/40] tracing: Add trampoline/graph selftest Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 25/40] tracing: Fix selftest config check for function graph start up test Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 26/40] ftrace: Add ftrace_add_rec_direct function Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 27/40] ftrace: Add multi direct register/unregister interface Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 28/40] ftrace: Add multi direct modify interface Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 29/40] ftrace/samples: Add multi direct interface test module Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 30/40] ftrace/direct: Do not disable when switching direct callers Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 31/40] tracing: Explain the trace recursion transition bit better Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 32/40] tracing: use %ps format string to print symbols Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 33/40] kprobes: convert tests to kunit Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 34/40] x86/unwind: Compile kretprobe fixup code only if CONFIG_KRETPROBES=y Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 35/40] arm64: kprobes: Record frame pointer with kretprobe instance Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 36/40] arm64: kprobes: Make a frame pointer on __kretprobe_trampoline Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 37/40] arm64: Recover kretprobe modified return address in stacktrace Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 38/40] ARM: clang: Do not rely on lr register for stacktrace Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 39/40] ARM: kprobes: Make a frame pointer on __kretprobe_trampoline Steven Rostedt
2021-10-22 20:48 ` [for-next][PATCH 40/40] ARM: Recover kretprobe modified return address in stacktrace Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211022204842.018049814@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.