lkml.org 
[lkml]   [2020]   [Feb]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC PATCH 1/2] trace: Move data to new section _ftrace_data
Date
Move the data used by tracing to a separate section to
help identify and perhaps control access to tracing data.

Signed-off-by: Joe Perches <joe@perches.com>
---
include/trace/trace_events.h | 31 ++++++++++++++++++++++---------
kernel/trace/trace_export.c | 10 +++++++---
2 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h
index 502c7b..361999f 100644
--- a/include/trace/trace_events.h
+++ b/include/trace/trace_events.h
@@ -369,7 +369,9 @@ trace_raw_output_##call(struct trace_iterator *iter, int flags, \
\
return trace_handle_return(s); \
} \
-static struct trace_event_functions trace_event_type_funcs_##call = { \
+static struct trace_event_functions \
+__attribute__((section("_ftrace_data"))) \
+trace_event_type_funcs_##call = { \
.trace = trace_raw_output_##call, \
};

@@ -439,9 +441,12 @@ static struct trace_event_functions trace_event_type_funcs_##call = { \

#undef DECLARE_EVENT_CLASS
#define DECLARE_EVENT_CLASS(call, proto, args, tstruct, func, print) \
-static struct trace_event_fields trace_event_fields_##call[] = { \
+static struct trace_event_fields \
+__attribute__((section("_ftrace_data"))) \
+trace_event_fields_##call[] = { \
tstruct \
- {} };
+ {} \
+};

#undef DEFINE_EVENT
#define DEFINE_EVENT(template, name, proto, args)
@@ -746,7 +751,8 @@ static inline void ftrace_test_probe_##call(void) \
#undef DECLARE_EVENT_CLASS
#define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
_TRACE_PERF_PROTO(call, PARAMS(proto)); \
-static char print_fmt_##call[] = print; \
+static char __attribute__((section("_ftrace_data"))) \
+print_fmt_##call[] = print; \
static struct trace_event_class __used __refdata event_class_##call = { \
.system = TRACE_SYSTEM_STRING, \
.fields_array = trace_event_fields_##call, \
@@ -760,7 +766,9 @@ static struct trace_event_class __used __refdata event_class_##call = { \
#undef DEFINE_EVENT
#define DEFINE_EVENT(template, call, proto, args) \
\
-static struct trace_event_call __used event_##call = { \
+static struct trace_event_call __used \
+__attribute__((section("_ftrace_data"))) \
+event_##call = { \
.class = &event_class_##template, \
{ \
.tp = &__tracepoint_##call, \
@@ -770,14 +778,18 @@ static struct trace_event_call __used event_##call = { \
.flags = TRACE_EVENT_FL_TRACEPOINT, \
}; \
static struct trace_event_call __used \
-__attribute__((section("_ftrace_events"))) *__event_##call = &event_##call
+__attribute__((section("_ftrace_events"))) \
+*__event_##call = &event_##call

#undef DEFINE_EVENT_PRINT
#define DEFINE_EVENT_PRINT(template, call, proto, args, print) \
\
-static char print_fmt_##call[] = print; \
+static char __attribute__((section("_ftrace_data"))) \
+print_fmt_##call[] = print; \
\
-static struct trace_event_call __used event_##call = { \
+static struct trace_event_call __used \
+__attribute__((section("_ftrace_data"))) \
+event_##call = { \
.class = &event_class_##template, \
{ \
.tp = &__tracepoint_##call, \
@@ -787,6 +799,7 @@ static struct trace_event_call __used event_##call = { \
.flags = TRACE_EVENT_FL_TRACEPOINT, \
}; \
static struct trace_event_call __used \
-__attribute__((section("_ftrace_events"))) *__event_##call = &event_##call
+__attribute__((section("_ftrace_events"))) \
+*__event_##call = &event_##call

#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
index 77ce5a..90af7c9 100644
--- a/kernel/trace/trace_export.c
+++ b/kernel/trace/trace_export.c
@@ -111,9 +111,12 @@ static void __always_unused ____ftrace_check_##name(void) \

#undef FTRACE_ENTRY
#define FTRACE_ENTRY(name, struct_name, id, tstruct, print) \
-static struct trace_event_fields ftrace_event_fields_##name[] = { \
+static struct trace_event_fields \
+__attribute__((section("_ftrace_data"))) \
+ftrace_event_fields_##name[] = { \
tstruct \
- {} };
+ {} \
+};

#include "trace_entries.h"

@@ -150,7 +153,8 @@ static struct trace_event_class __refdata event_class_ftrace_##call = { \
.reg = regfn, \
}; \
\
-struct trace_event_call __used event_##call = { \
+struct trace_event_call __used __attribute((section("_ftrace_data"))) \
+event_##call = { \
.class = &event_class_ftrace_##call, \
{ \
.name = #call, \
--
2.24.0
\
 
 \ /
  Last update: 2020-02-19 03:05    [W:0.048 / U:0.564 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site