From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Jiri Kosina <jikos@kernel.org>, Miroslav Benes <mbenes@suse.cz>,
Petr Mladek <pmladek@suse.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Thomas Meyer <thomas@m3y3r.de>, Kees Cook <keescook@chromium.org>
Subject: [for-next][PATCH 04/17] pstore/ftrace: Add recursion protection to the ftrace callback
Date: Wed, 11 Nov 2020 19:32:48 -0500 [thread overview]
Message-ID: <20201112003333.746297897@goodmis.org> (raw)
In-Reply-To: 20201112003244.764326960@goodmis.org
From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
If a ftrace callback does not supply its own recursion protection and
does not set the RECURSION_SAFE flag in its ftrace_ops, then ftrace will
make a helper trampoline to do so before calling the callback instead of
just calling the callback directly.
The default for ftrace_ops is going to change. It will expect that handlers
provide their own recursion protection, unless its ftrace_ops states
otherwise.
Link: https://lkml.kernel.org/r/20201028115612.990886844@goodmis.org
Link: https://lkml.kernel.org/r/20201106023546.720372267@goodmis.org
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Miroslav Benes <mbenes@suse.cz>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Thomas Meyer <thomas@m3y3r.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
fs/pstore/ftrace.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/pstore/ftrace.c b/fs/pstore/ftrace.c
index 5c0450701293..816210fc5d3a 100644
--- a/fs/pstore/ftrace.c
+++ b/fs/pstore/ftrace.c
@@ -28,6 +28,7 @@ static void notrace pstore_ftrace_call(unsigned long ip,
struct ftrace_ops *op,
struct pt_regs *regs)
{
+ int bit;
unsigned long flags;
struct pstore_ftrace_record rec = {};
struct pstore_record record = {
@@ -40,6 +41,10 @@ static void notrace pstore_ftrace_call(unsigned long ip,
if (unlikely(oops_in_progress))
return;
+ bit = ftrace_test_recursion_trylock();
+ if (bit < 0)
+ return;
+
local_irq_save(flags);
rec.ip = ip;
@@ -49,6 +54,7 @@ static void notrace pstore_ftrace_call(unsigned long ip,
psinfo->write(&record);
local_irq_restore(flags);
+ ftrace_test_recursion_unlock(bit);
}
static struct ftrace_ops pstore_ftrace_ops __read_mostly = {
--
2.28.0
next prev parent reply other threads:[~2020-11-12 1:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-12 0:32 [for-next][PATCH 00/17] tracing: Updates for 5.11 Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 01/17] ftrace: Move the recursion testing into global headers Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 02/17] ftrace: Add ftrace_test_recursion_trylock() helper function Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 03/17] ftrace: Optimize testing what context current is in Steven Rostedt
2020-11-12 0:32 ` Steven Rostedt [this message]
2020-11-12 0:32 ` [for-next][PATCH 05/17] kprobes/ftrace: Add recursion protection to the ftrace callback Steven Rostedt
2020-11-12 0:32 ` Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 06/17] livepatch/ftrace: " Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 07/17] livepatch: Trigger WARNING if livepatch function fails due to recursion Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 08/17] perf/ftrace: Add recursion protection to the ftrace callback Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 09/17] perf/ftrace: Check for rcu_is_watching() in callback function Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 10/17] ftrace: Reverse what the RECURSION flag means in the ftrace_ops Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 11/17] ftrace: Add recording of functions that caused recursion Steven Rostedt
2020-11-12 0:32 ` Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 12/17] fgraph: Make overruns 4 bytes in graph stack structure Steven Rostedt
2020-11-12 9:18 ` David Laight
2020-11-12 14:39 ` Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 13/17] ftrace: Clean up the recursion code a bit Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 14/17] ring-buffer: Add recording of ring buffer recursion into recursed_functions Steven Rostedt
2020-11-12 0:32 ` [for-next][PATCH 15/17] ftrace: Remove unused varible ret Steven Rostedt
2020-11-12 0:33 ` [for-next][PATCH 16/17] tracing: Fix some typos in comments Steven Rostedt
2020-11-12 0:33 ` [for-next][PATCH 17/17] MAINTAINERS: assign ./fs/tracefs to TRACING 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=20201112003333.746297897@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=jikos@kernel.org \
--cc=jpoimboe@redhat.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=thomas@m3y3r.de \
/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.