Le mer. 11 juill. 2018, à 15 h 56, Steven Rostedt <rost...@goodmis.org> a écrit : > > On Wed, 11 Jul 2018 15:34:30 -0400 > Francis Deslauriers <francis.deslauri...@efficios.com> wrote: > > > Hi Steven, > > I tested it and it prevents the kernel crash I am witnessing. > > As for the side-effect that Masami mentioned regarding not being able to > > probe > > function inside the trace_kprobe.c file, I suggest we move the target > > function in > > its own separate compile unit so it can be compiled with the ftrace cflags. > > See patch below. > > > > The patch below looks fine and so does Masami's. But there's too many > patches within emails (not separated out). I have no idea what to > apply. I'm not going to apply anything that is not sent as a proper > patch (ie. any patch within a separate thread, like the patch below). > I will put together a proper patch set with both commits.
Masami, you mentioned: "So anyway we still need to mark those functions NOKPROBE_SYMBOL." in a reply. What functions were you talking about? ftrace_ops_assist_func? Aren't those functions covered by your within_notrace_func check? Thank you, Francis > -- Steve > > > > Thanks > > Francis > > > > >From d5a3645bd0046f28275d6b60207958f2751c1f47 Mon Sep 17 00:00:00 2001 > > From: Francis Deslauriers <francis.deslauri...@efficios.com> > > Date: Wed, 11 Jul 2018 12:34:22 -0400 > > Subject: [PATCH] selftest/ftrace: Move kprobe selftest function to separate > > compile unit > > > > Move selftest function to its own compile unit so it can be compiled > > with the ftrace cflags (CC_FLAGS_FTRACE) allowing it to be probed > > during the ftrace startup tests. > > > > Signed-off-by: Francis Deslauriers <francis.deslauri...@efficios.com> > > --- > > kernel/trace/Makefile | 5 +++++ > > kernel/trace/trace_kprobe.c | 12 +----------- > > kernel/trace/trace_kprobe_selftest.c | 10 ++++++++++ > > kernel/trace/trace_kprobe_selftest.h | 7 +++++++ > > 4 files changed, 23 insertions(+), 11 deletions(-) > > create mode 100644 kernel/trace/trace_kprobe_selftest.c > > create mode 100644 kernel/trace/trace_kprobe_selftest.h > > > > diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile > > index e2538c7..e38771e 100644 > > --- a/kernel/trace/Makefile > > +++ b/kernel/trace/Makefile > > @@ -13,6 +13,11 @@ obj-y += trace_selftest_dynamic.o > > endif > > endif > > > > +ifdef CONFIG_FTRACE_STARTUP_TEST > > +CFLAGS_trace_kprobe_selftest.o = $(CC_FLAGS_FTRACE) > > +obj-$(CONFIG_KPROBE_EVENTS) += trace_kprobe_selftest.o > > +endif > > + > > # If unlikely tracing is enabled, do not trace these files > > ifdef CONFIG_TRACING_BRANCHES > > KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING > > diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c > > index 952dc2a..3fe966f 100644 > > --- a/kernel/trace/trace_kprobe.c > > +++ b/kernel/trace/trace_kprobe.c > > @@ -24,6 +24,7 @@ > > #include <linux/error-injection.h> > > > > #include "trace_probe.h" > > +#include "trace_kprobe_selftest.h" > > > > #define KPROBE_EVENT_SYSTEM "kprobes" > > #define KRETPROBE_MAXACTIVE_MAX 4096 > > @@ -1560,17 +1561,6 @@ fs_initcall(init_kprobe_trace); > > > > > > #ifdef CONFIG_FTRACE_STARTUP_TEST > > -/* > > - * The "__used" keeps gcc from removing the function symbol > > - * from the kallsyms table. 'noinline' makes sure that there > > - * isn't an inlined version used by the test method below > > - */ > > -static __used __init noinline int > > -kprobe_trace_selftest_target(int a1, int a2, int a3, int a4, int a5, int > > a6) > > -{ > > - return a1 + a2 + a3 + a4 + a5 + a6; > > -} > > - > > static __init struct trace_event_file * > > find_trace_probe_file(struct trace_kprobe *tk, struct trace_array *tr) > > { > > diff --git a/kernel/trace/trace_kprobe_selftest.c > > b/kernel/trace/trace_kprobe_selftest.c > > new file mode 100644 > > index 0000000..a3d2090 > > --- /dev/null > > +++ b/kernel/trace/trace_kprobe_selftest.c > > @@ -0,0 +1,10 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Function used during the kprobe self test. This function is in a > > seperate > > + * compile unit so it can be compile with CC_FLAGS_FTRACE to ensure that it > > + * can be probed by the selftests. > > + */ > > +int kprobe_trace_selftest_target(int a1, int a2, int a3, int a4, int > > a5, int a6) > > +{ > > + return a1 + a2 + a3 + a4 + a5 + a6; > > +} > > diff --git a/kernel/trace/trace_kprobe_selftest.h > > b/kernel/trace/trace_kprobe_selftest.h > > new file mode 100644 > > index 0000000..9243d4e > > --- /dev/null > > +++ b/kernel/trace/trace_kprobe_selftest.h > > @@ -0,0 +1,7 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Function used during the kprobe self test. This function is in a > > seperate > > + * compile unit so it can be compile with CC_FLAGS_FTRACE to ensure that it > > + * can be probed by the selftests. > > + */ > > +int kprobe_trace_selftest_target(int a1, int a2, int a3, int a4, int > > a5, int a6); > -- Francis Deslauriers Software developer EfficiOS inc.