2013-03-26 16:53:13

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH] ftrace: Consistently restore trace function on sysctl enabling

If we reenable ftrace via syctl, we currently set ftrace_trace_function
based on the previous simplistic algorithm. This is inconsistent with
what update_ftrace_function does. So better call that helper instead.

Signed-off-by: Jan Kiszka <[email protected]>
---
kernel/trace/ftrace.c | 8 ++------
1 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 62b71f6..b9b90f0 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -4538,12 +4538,8 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
ftrace_startup_sysctl();

/* we are starting ftrace again */
- if (ftrace_ops_list != &ftrace_list_end) {
- if (ftrace_ops_list->next == &ftrace_list_end)
- ftrace_trace_function = ftrace_ops_list->func;
- else
- ftrace_trace_function = ftrace_ops_list_func;
- }
+ if (ftrace_ops_list != &ftrace_list_end)
+ update_ftrace_function();

} else {
/* stopping ftrace calls (just send to ftrace_stub) */
--
1.7.3.4


2013-03-26 19:10:18

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] ftrace: Consistently restore trace function on sysctl enabling

On Tue, 2013-03-26 at 17:53 +0100, Jan Kiszka wrote:
> If we reenable ftrace via syctl, we currently set ftrace_trace_function
> based on the previous simplistic algorithm. This is inconsistent with
> what update_ftrace_function does. So better call that helper instead.
>
> Signed-off-by: Jan Kiszka <[email protected]>
> ---
> kernel/trace/ftrace.c | 8 ++------
> 1 files changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index 62b71f6..b9b90f0 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -4538,12 +4538,8 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
> ftrace_startup_sysctl();
>
> /* we are starting ftrace again */
> - if (ftrace_ops_list != &ftrace_list_end) {
> - if (ftrace_ops_list->next == &ftrace_list_end)
> - ftrace_trace_function = ftrace_ops_list->func;
> - else
> - ftrace_trace_function = ftrace_ops_list_func;
> - }

I remember there was a reason why I didn't update this, but I can't
remember why. Looking at it now, it doesn't look like there is a reason.

I'll have to think about this one more. Another score for not
commenting :-p

Thanks,

-- Steve

> + if (ftrace_ops_list != &ftrace_list_end)
> + update_ftrace_function();
>
> } else {
> /* stopping ftrace calls (just send to ftrace_stub) */

2013-03-26 19:55:41

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] ftrace: Consistently restore trace function on sysctl enabling

On Tue, 2013-03-26 at 15:10 -0400, Steven Rostedt wrote:

> I remember there was a reason why I didn't update this, but I can't
> remember why. Looking at it now, it doesn't look like there is a reason.

I remember now. I didn't add it because the update_ftrace_function was
too much at the time. It was still doing the basic updates, but it was
also doing a bit more too. But this was before I added the extra checks.
I didn't call it because it seemed to be an overkill. But that doesn't
apply today.


>
> I'll have to think about this one more. Another score for not
> commenting :-p

OK, I'll add it and it looks like it needs to go immediately, as well as
way back to 3.0 stable.

Thanks!

-- Steve