Skip to content

Commit

Permalink
selftest/ftrace: Move kprobe selftest function to separate compile unit
Browse files Browse the repository at this point in the history
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.

Link: http://lkml.kernel.org/r/153294604271.32740.16490677128630177030.stgit@devbox

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
  • Loading branch information
Francis Deslauriers authored and Steven Rostedt (VMware) committed Jul 30, 2018
1 parent 45408c4 commit d899926
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 11 deletions.
5 changes: 5 additions & 0 deletions kernel/trace/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 1 addition & 11 deletions kernel/trace/trace_kprobe.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <linux/rculist.h>
#include <linux/error-injection.h>

#include "trace_kprobe_selftest.h"
#include "trace_probe.h"

#define KPROBE_EVENT_SYSTEM "kprobes"
Expand Down Expand Up @@ -1587,17 +1588,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)
{
Expand Down
10 changes: 10 additions & 0 deletions kernel/trace/trace_kprobe_selftest.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Function used during the kprobe self test. This function is in a separate
* 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;
}
7 changes: 7 additions & 0 deletions kernel/trace/trace_kprobe_selftest.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Function used during the kprobe self test. This function is in a separate
* 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);

0 comments on commit d899926

Please sign in to comment.