diff options
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/ftrace.c | 19 |
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; |
