Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7aad4e1 authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Steven Rostedt
Browse files

ftrace: Set callback to ftrace_stub when no ops are registered



The clean up that adds the helper function ftrace_ops_get_func()
caused the default function to not change when DYNAMIC_FTRACE was not
set and no ftrace_ops were registered. Although static tracing is
not very useful (not having DYNAMIC_FTRACE set), it is still supported
and we don't want to break it.

Clean up the if statement even more to specifically have the default
function call ftrace_stub when no ftrace_ops are registered. This
fixes the small bug for static tracing as well as makes the code a
bit more understandable.

Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 87354059
Loading
Loading
Loading
Loading
+13 −6
Original line number Original line Diff line number Diff line
@@ -253,18 +253,25 @@ static void update_ftrace_function(void)
{
{
	ftrace_func_t func;
	ftrace_func_t func;


	/*
	 * Prepare the ftrace_ops that the arch callback will use.
	 * If there's only one ftrace_ops registered, the ftrace_ops_list
	 * will point to the ops we want.
	 */
	set_function_trace_op = ftrace_ops_list;

	/* If there's no ftrace_ops registered, just call the stub function */
	if (ftrace_ops_list == &ftrace_list_end) {
		func = ftrace_stub;

	/*
	/*
	 * If we are at the end of the list and this ops is
	 * If we are at the end of the list and this ops is
	 * recursion safe and not dynamic and the arch supports passing ops,
	 * recursion safe and not dynamic and the arch supports passing ops,
	 * then have the mcount trampoline call the function directly.
	 * then have the mcount trampoline call the function directly.
	 */
	 */
	if (ftrace_ops_list == &ftrace_list_end ||
	} else if (ftrace_ops_list->next == &ftrace_list_end) {
	    (ftrace_ops_list->next == &ftrace_list_end)) {

		/* Set the ftrace_ops that the arch callback uses */
		set_function_trace_op = ftrace_ops_list;

		func = ftrace_ops_get_func(ftrace_ops_list);
		func = ftrace_ops_get_func(ftrace_ops_list);

	} else {
	} else {
		/* Just use the default ftrace_ops */
		/* Just use the default ftrace_ops */
		set_function_trace_op = &ftrace_list_end;
		set_function_trace_op = &ftrace_list_end;