diff options
author | Masami Hiramatsu <mhiramat@redhat.com> | 2010-02-02 16:49:11 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-02-04 03:36:19 -0500 |
commit | 2cfa19780d61740f65790c5bae363b759d7c96fa (patch) | |
tree | cc7a8277a9f04c1bd613efe03c7d6d16cd18dc96 /include/linux/ftrace.h | |
parent | 615d0ebbc782b67296e3226c293f520f93f93515 (diff) |
ftrace/alternatives: Introducing *_text_reserved functions
Introducing *_text_reserved functions for checking the text
address range is partially reserved or not. This patch provides
checking routines for x86 smp alternatives and dynamic ftrace.
Since both functions modify fixed pieces of kernel text, they
should reserve and protect those from other dynamic text
modifier, like kprobes.
This will also be extended when introducing other subsystems
which modify fixed pieces of kernel text. Dynamic text modifiers
should avoid those.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: systemtap <systemtap@sources.redhat.com>
Cc: DLE <dle-develop@lists.sourceforge.net>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: przemyslaw@pawelczyk.it
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Mathieu Desnoyers <compudj@krystal.dyndns.org>
Cc: Jason Baron <jbaron@redhat.com>
LKML-Reference: <20100202214911.4694.16587.stgit@dhcp-100-2-132.bos.redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/ftrace.h')
-rw-r--r-- | include/linux/ftrace.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 0b4f97d24d7f..9d127efed43c 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h | |||
@@ -134,6 +134,8 @@ extern void | |||
134 | unregister_ftrace_function_probe_func(char *glob, struct ftrace_probe_ops *ops); | 134 | unregister_ftrace_function_probe_func(char *glob, struct ftrace_probe_ops *ops); |
135 | extern void unregister_ftrace_function_probe_all(char *glob); | 135 | extern void unregister_ftrace_function_probe_all(char *glob); |
136 | 136 | ||
137 | extern int ftrace_text_reserved(void *start, void *end); | ||
138 | |||
137 | enum { | 139 | enum { |
138 | FTRACE_FL_FREE = (1 << 0), | 140 | FTRACE_FL_FREE = (1 << 0), |
139 | FTRACE_FL_FAILED = (1 << 1), | 141 | FTRACE_FL_FAILED = (1 << 1), |
@@ -250,6 +252,10 @@ static inline int unregister_ftrace_command(char *cmd_name) | |||
250 | { | 252 | { |
251 | return -EINVAL; | 253 | return -EINVAL; |
252 | } | 254 | } |
255 | static inline int ftrace_text_reserved(void *start, void *end) | ||
256 | { | ||
257 | return 0; | ||
258 | } | ||
253 | #endif /* CONFIG_DYNAMIC_FTRACE */ | 259 | #endif /* CONFIG_DYNAMIC_FTRACE */ |
254 | 260 | ||
255 | /* totally disable ftrace - can not re-enable after this */ | 261 | /* totally disable ftrace - can not re-enable after this */ |