linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Chengming Zhou <zhouchengming@bytedance.com>,
	Muchun Song <songmuchun@bytedance.com>
Subject: [for-linus][PATCH 06/17] ftrace: Do not let direct or IPMODIFY ftrace_ops be added to module and set trampolines
Date: Tue, 04 Aug 2020 16:57:49 -0400	[thread overview]
Message-ID: <20200804205812.775534405@goodmis.org> (raw)
In-Reply-To: 20200804205743.419135730@goodmis.org

From: Chengming Zhou <zhouchengming@bytedance.com>

When inserting a module, we find all ftrace_ops referencing it on the
ftrace_ops_list. But FTRACE_OPS_FL_DIRECT and FTRACE_OPS_FL_IPMODIFY
flags are special, and should not be set automatically. So warn and
skip ftrace_ops that have these two flags set and adding new code.
Also check if only one ftrace_ops references the module, in which case
we can use a trampoline as an optimization.

Link: https://lkml.kernel.org/r/20200728180554.65203-2-zhouchengming@bytedance.com

Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
 kernel/trace/ftrace.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index d052f856f1cf..f433cb44300a 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -6199,9 +6199,17 @@ static int referenced_filters(struct dyn_ftrace *rec)
 
 	for (ops = ftrace_ops_list; ops != &ftrace_list_end; ops = ops->next) {
 		if (ops_references_rec(ops, rec)) {
+			if (WARN_ON_ONCE(ops->flags & FTRACE_OPS_FL_DIRECT))
+				continue;
+			if (WARN_ON_ONCE(ops->flags & FTRACE_OPS_FL_IPMODIFY))
+				continue;
 			cnt++;
 			if (ops->flags & FTRACE_OPS_FL_SAVE_REGS)
 				rec->flags |= FTRACE_FL_REGS;
+			if (cnt == 1 && ops->trampoline)
+				rec->flags |= FTRACE_FL_TRAMP;
+			else
+				rec->flags &= ~FTRACE_FL_TRAMP;
 		}
 	}
 
-- 
2.26.2



  parent reply	other threads:[~2020-08-04 20:58 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-04 20:57 [for-linus][PATCH 00/17] tracing: Last minute fixes for this merge window Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 01/17] tracing: Simplify defining of the next event id Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 02/17] tracing: Save one trace_event->type by using __TRACE_LAST_TYPE Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 03/17] tracing/hwlat: Drop the duplicate assignment in start_kthread() Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 04/17] tracing/hwlat: Honor the tracing_cpumask Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 05/17] ftrace: Setup correct FTRACE_FL_REGS flags for module Steven Rostedt
2020-08-09 15:53   ` Sasha Levin
2020-08-04 20:57 ` Steven Rostedt [this message]
2020-08-04 20:57 ` [for-linus][PATCH 07/17] tracing: Remove outdated comment in stack handling Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 09/17] tracepoint: Mark __tracepoint_strings __used Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 10/17] tracepoint: Use __used attribute definitions from compiler_attributes.h Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 11/17] ftrace: Fix ftrace_trace_task return value Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 12/17] kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 13/17] tracing/uprobe: Remove dead code in trace_uprobe_register() Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 14/17] kprobes: Remove show_registers() function prototype Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 15/17] lib/bootconfig: Add override operator support Steven Rostedt
2020-08-04 20:57 ` [for-linus][PATCH 16/17] tools/bootconfig: Add testcases for value override operator Steven Rostedt
2020-08-04 20:58 ` [for-linus][PATCH 17/17] Documentation: bootconfig: Add bootconfig " 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=20200804205812.775534405@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=songmuchun@bytedance.com \
    --cc=zhouchengming@bytedance.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).