aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/ftrace.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index dabf734f909c..708aea493d96 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -254,17 +254,24 @@ static void update_ftrace_function(void)
254 ftrace_func_t func; 254 ftrace_func_t func;
255 255
256 /* 256 /*
257 * Prepare the ftrace_ops that the arch callback will use.
258 * If there's only one ftrace_ops registered, the ftrace_ops_list
259 * will point to the ops we want.
260 */
261 set_function_trace_op = ftrace_ops_list;
262
263 /* If there's no ftrace_ops registered, just call the stub function */
264 if (ftrace_ops_list == &ftrace_list_end) {
265 func = ftrace_stub;
266
267 /*
257 * If we are at the end of the list and this ops is 268 * If we are at the end of the list and this ops is
258 * recursion safe and not dynamic and the arch supports passing ops, 269 * recursion safe and not dynamic and the arch supports passing ops,
259 * then have the mcount trampoline call the function directly. 270 * then have the mcount trampoline call the function directly.
260 */ 271 */
261 if (ftrace_ops_list == &ftrace_list_end || 272 } else if (ftrace_ops_list->next == &ftrace_list_end) {
262 (ftrace_ops_list->next == &ftrace_list_end)) {
263
264 /* Set the ftrace_ops that the arch callback uses */
265 set_function_trace_op = ftrace_ops_list;
266
267 func = ftrace_ops_get_func(ftrace_ops_list); 273 func = ftrace_ops_get_func(ftrace_ops_list);
274
268 } else { 275 } else {
269 /* Just use the default ftrace_ops */ 276 /* Just use the default ftrace_ops */
270 set_function_trace_op = &ftrace_list_end; 277 set_function_trace_op = &ftrace_list_end;