public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Li Zefan <lizf@cn.fujitsu.com>
Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>,
	Ingo Molnar <mingo@elte.hu>, Steven Rostedt <rostedt@goodmis.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/2] tracing/function: fix the return value of ftrace_trace_onoff_callback()
Date: Thu, 16 Jul 2009 23:35:53 -0400	[thread overview]
Message-ID: <20090717033551.GA4977@nowhere> (raw)
In-Reply-To: <4A5EF2F7.3090706@cn.fujitsu.com>

On Thu, Jul 16, 2009 at 05:29:27PM +0800, Li Zefan wrote:
> >> ftrace_trace_onoff_callback() will return error even if we do the
> >> right operation, for example:
> >>
> >> # echo _spin_*:traceon:10 > set_ftrace_filter
> >> -bash: echo: write error: Invalid argument
> >> # cat set_ftrace_filter
> >> #### all functions enabled ####
> >> _spin_trylock_bh:traceon:count=10
> >> _spin_unlock_irq:traceon:count=10
> >> _spin_unlock_bh:traceon:count=10
> >> _spin_lock_irq:traceon:count=10
> >> _spin_unlock:traceon:count=10
> >> _spin_trylock:traceon:count=10
> >> _spin_unlock_irqrestore:traceon:count=10
> >> _spin_lock_irqsave:traceon:count=10
> >> _spin_lock_bh:traceon:count=10
> >> _spin_lock:traceon:count=10
> >>
> >> We want to set _spin_*:traceon:10 to set_ftrace_filter, it complain
> >> with "Invalid argument", but the operation is successful.
> >> So, this patch fix it.
> >>
> >> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> > 
> > Looks good, thanks.
> > 
> > Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
> > 
> 
> Reviewed-by: Li Zefan <lizf@cn.fujitsu.com>
> 


Thanks!
I'm queuing it in the fixes for 2.6.31 and also add a Cc: stable@kernel.org
tag because the fix also applies on .30

I've also detailed a bit more the changelog, see below:
---
>From 04aef32d39cc4ef80087c0ce8ed113c6d64f1a6b Mon Sep 17 00:00:00 2001
From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Date: Wed, 15 Jul 2009 12:29:06 +0800
Subject: [PATCH] tracing/function: Fix the return value of ftrace_trace_onoff_callback()

ftrace_trace_onoff_callback() will return an error even if we do the
right operation, for example:

 # echo _spin_*:traceon:10 > set_ftrace_filter
 -bash: echo: write error: Invalid argument
 # cat set_ftrace_filter
 #### all functions enabled ####
 _spin_trylock_bh:traceon:count=10
 _spin_unlock_irq:traceon:count=10
 _spin_unlock_bh:traceon:count=10
 _spin_lock_irq:traceon:count=10
 _spin_unlock:traceon:count=10
 _spin_trylock:traceon:count=10
 _spin_unlock_irqrestore:traceon:count=10
 _spin_lock_irqsave:traceon:count=10
 _spin_lock_bh:traceon:count=10
 _spin_lock:traceon:count=10

We want to set _spin_*:traceon:10 to set_ftrace_filter, it complains
with "Invalid argument", but the operation is successful.

This is because ftrace_process_regex() returns the number of functions that
matched the pattern. If the number is not 0, this value is returned
by ftrace_regex_write() whereas we want to return the number of bytes
virtually written.
Also the file offset pointer is not updated in this case.

If the number of matched functions is lower than the number of bytes written
by the user, this results to a reprocessing of the string given by the user with
a lower size, leading to a malformed ftrace regex and then a -EINVAL returned.

So, this patch fixes it by returning 0 if no error occured.
The fix also applies on 2.6.30

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Reviewed-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: stable@kernel.org
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
---
 kernel/trace/trace_functions.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c
index 7402144..75ef000 100644
--- a/kernel/trace/trace_functions.c
+++ b/kernel/trace/trace_functions.c
@@ -363,7 +363,7 @@ ftrace_trace_onoff_callback(char *glob, char *cmd, char *param, int enable)
  out_reg:
 	ret = register_ftrace_function_probe(glob, ops, count);
 
-	return ret;
+	return ret < 0 ? ret : 0;
 }
 
 static struct ftrace_func_command ftrace_traceon_cmd = {
-- 
1.6.2.3



      reply	other threads:[~2009-07-17  3:36 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-15  4:29 [PATCH 1/2] tracing/function: fix the return value of ftrace_trace_onoff_callback() Xiao Guangrong
2009-07-15  4:32 ` [PATCH 2/2] tracing/function: simplify for __ftrace_replace_code() Xiao Guangrong
2009-07-16  9:29   ` Li Zefan
2009-07-17  4:05   ` Frederic Weisbecker
2009-07-17  4:30     ` Li Zefan
2009-07-17  4:39       ` Frederic Weisbecker
2009-07-15 14:28 ` [PATCH 1/2] tracing/function: fix the return value of ftrace_trace_onoff_callback() Frederic Weisbecker
2009-07-16  9:29   ` Li Zefan
2009-07-17  3:35     ` Frederic Weisbecker [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090717033551.GA4977@nowhere \
    --to=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=xiaoguangrong@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox