public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer()
@ 2009-01-15  1:57 Steven Rostedt
  2009-01-15 10:02 ` Ingo Molnar
  2009-01-15 10:25 ` Steven Rostedt
  0 siblings, 2 replies; 7+ messages in thread
From: Steven Rostedt @ 2009-01-15  1:57 UTC (permalink / raw)
  To: LKML; +Cc: Ingo Molnar, Frédéric Weisbecker, Li Zefan,
	Andrew Morton


Ingo,

The following patch is in:

  git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git

    branch: tip/devel


Li Zefan (1):
      tracing/ftrace: add missing unlock in register_stat_tracer()

----
 kernel/trace/trace_stat.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
---------------------------
commit 6af81ac4701bf80dde4b723f28a777daefdf512c
Author: Li Zefan <lizf@cn.fujitsu.com>
Date:   Thu Jan 15 09:30:52 2009 +0800

    tracing/ftrace: add missing unlock in register_stat_tracer()
    
    We should unlock all_stat_sessions_mutex before returning failure.
    
    Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
    Signed-off-by: Steven Rostedt <srostedt@redhat.com>

diff --git a/kernel/trace/trace_stat.c b/kernel/trace/trace_stat.c
index cb29282..8669f3c 100644
--- a/kernel/trace/trace_stat.c
+++ b/kernel/trace/trace_stat.c
@@ -73,8 +73,10 @@ int register_stat_tracer(struct tracer_stat *trace)
 	/* Already registered? */
 	mutex_lock(&all_stat_sessions_mutex);
 	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
-		if (node->ts == trace)
+		if (node->ts == trace) {
+			mutex_unlock(all_stat_sessions_mutex);
 			return -EINVAL;
+		}
 	}
 	mutex_unlock(&all_stat_sessions_mutex);
 


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer()
  2009-01-15  1:57 [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer() Steven Rostedt
@ 2009-01-15 10:02 ` Ingo Molnar
  2009-01-15 10:14   ` Steven Rostedt
  2009-01-15 10:25 ` Steven Rostedt
  1 sibling, 1 reply; 7+ messages in thread
From: Ingo Molnar @ 2009-01-15 10:02 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: LKML, Frédéric Weisbecker, Li Zefan, Andrew Morton


* Steven Rostedt <rostedt@goodmis.org> wrote:

> 
> Ingo,
> 
> The following patch is in:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git
> 
>     branch: tip/devel
> 
> 
> Li Zefan (1):
>       tracing/ftrace: add missing unlock in register_stat_tracer()

hm, not there yet - forgot to push out?

	Ingo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer()
  2009-01-15 10:02 ` Ingo Molnar
@ 2009-01-15 10:14   ` Steven Rostedt
  0 siblings, 0 replies; 7+ messages in thread
From: Steven Rostedt @ 2009-01-15 10:14 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: LKML, Frédéric Weisbecker, Li Zefan, Andrew Morton


On Thu, 15 Jan 2009, Ingo Molnar wrote:

> 
> * Steven Rostedt <rostedt@goodmis.org> wrote:
> 
> > 
> > Ingo,
> > 
> > The following patch is in:
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git
> > 
> >     branch: tip/devel
> > 
> > 
> > Li Zefan (1):
> >       tracing/ftrace: add missing unlock in register_stat_tracer()
> 
> hm, not there yet - forgot to push out?

Yep, sorry ;-)

Pushed, may take a few minutes to sync.

-- Steve


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer()
  2009-01-15  1:57 [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer() Steven Rostedt
  2009-01-15 10:02 ` Ingo Molnar
@ 2009-01-15 10:25 ` Steven Rostedt
  2009-01-15 10:26   ` Steven Rostedt
  2009-01-15 10:28   ` Ingo Molnar
  1 sibling, 2 replies; 7+ messages in thread
From: Steven Rostedt @ 2009-01-15 10:25 UTC (permalink / raw)
  To: LKML; +Cc: Ingo Molnar, Frédéric Weisbecker, Li Zefan,
	Andrew Morton


Ingo, revert this patch (or don't pull it yet)
I just noticed that it does not compile. I should not be doing git pulls 
at night :-(


On Wed, 14 Jan 2009, Steven Rostedt wrote:

> 
> Ingo,
> 
> The following patch is in:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git
> 
>     branch: tip/devel
> 
> 
> Li Zefan (1):
>       tracing/ftrace: add missing unlock in register_stat_tracer()
> 
> ----
>  kernel/trace/trace_stat.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
> ---------------------------
> commit 6af81ac4701bf80dde4b723f28a777daefdf512c
> Author: Li Zefan <lizf@cn.fujitsu.com>
> Date:   Thu Jan 15 09:30:52 2009 +0800
> 
>     tracing/ftrace: add missing unlock in register_stat_tracer()
>     
>     We should unlock all_stat_sessions_mutex before returning failure.
>     
>     Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
>     Signed-off-by: Steven Rostedt <srostedt@redhat.com>
> 
> diff --git a/kernel/trace/trace_stat.c b/kernel/trace/trace_stat.c
> index cb29282..8669f3c 100644
> --- a/kernel/trace/trace_stat.c
> +++ b/kernel/trace/trace_stat.c
> @@ -73,8 +73,10 @@ int register_stat_tracer(struct tracer_stat *trace)
>  	/* Already registered? */
>  	mutex_lock(&all_stat_sessions_mutex);
>  	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
> -		if (node->ts == trace)
> +		if (node->ts == trace) {
> +			mutex_unlock(all_stat_sessions_mutex);

missing &

-- Steve

>  			return -EINVAL;
> +		}
>  	}
>  	mutex_unlock(&all_stat_sessions_mutex);
>  
> 
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer()
  2009-01-15 10:25 ` Steven Rostedt
@ 2009-01-15 10:26   ` Steven Rostedt
  2009-01-15 10:28   ` Ingo Molnar
  1 sibling, 0 replies; 7+ messages in thread
From: Steven Rostedt @ 2009-01-15 10:26 UTC (permalink / raw)
  To: LKML; +Cc: Ingo Molnar, Frédéric Weisbecker, Li Zefan,
	Andrew Morton



On Thu, 15 Jan 2009, Steven Rostedt wrote:

> 
> Ingo, revert this patch (or don't pull it yet)
> I just noticed that it does not compile. I should not be doing git pulls 
> at night :-(

Probably explains why I did not push it. I think I noticed it last night, 
but sent out the email by mistake. I was too tired to fix it up.

-- Steve

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer()
  2009-01-15 10:25 ` Steven Rostedt
  2009-01-15 10:26   ` Steven Rostedt
@ 2009-01-15 10:28   ` Ingo Molnar
  2009-01-15 10:38     ` [PATCH] tracing: trace_stat.c cleanup Ingo Molnar
  1 sibling, 1 reply; 7+ messages in thread
From: Ingo Molnar @ 2009-01-15 10:28 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: LKML, Frédéric Weisbecker, Li Zefan, Andrew Morton


* Steven Rostedt <rostedt@goodmis.org> wrote:

> 
> Ingo, revert this patch (or don't pull it yet) I just noticed that it 
> does not compile. I should not be doing git pulls at night :-(

you just caught me in the middle of writing up a bugreport ;-)

kernel/trace/trace_stat.c:77: error: incompatible type for argument 1 of 'mutex_unlock'

easy enough to fix - and i did that.

	Ingo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] tracing: trace_stat.c cleanup
  2009-01-15 10:28   ` Ingo Molnar
@ 2009-01-15 10:38     ` Ingo Molnar
  0 siblings, 0 replies; 7+ messages in thread
From: Ingo Molnar @ 2009-01-15 10:38 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: LKML, Frédéric Weisbecker, Li Zefan, Andrew Morton


btw., while looking into the kernel/trace/trace_stat.c file to fix this 
build bug i also did the cleanups below.

	Ingo

------------>
>From 55922173f1f63903b6de03711ab8ff980cbe58d2 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Thu, 15 Jan 2009 11:31:21 +0100
Subject: [PATCH] tracing: trace_stat.c cleanup

Impact: cleanup

- whitespace / code alignment cleanups
- avoid unnecessary forward prototype by reordering functions

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 kernel/trace/trace_stat.c |  147 ++++++++++++++++++++++-----------------------
 1 files changed, 71 insertions(+), 76 deletions(-)

diff --git a/kernel/trace/trace_stat.c b/kernel/trace/trace_stat.c
index 2110cea..eae9cef 100644
--- a/kernel/trace/trace_stat.c
+++ b/kernel/trace/trace_stat.c
@@ -17,16 +17,16 @@
 
 /* List of stat entries from a tracer */
 struct trace_stat_list {
-	struct list_head 	list;
-	void 			*stat;
+	struct list_head	list;
+	void			*stat;
 };
 
 /* A stat session is the stats output in one file */
 struct tracer_stat_session {
 	struct list_head	session_list;
-	struct tracer_stat 	*ts;
-	struct list_head 	stat_list;
-	struct mutex 		stat_mutex;
+	struct tracer_stat	*ts;
+	struct list_head	stat_list;
+	struct mutex		stat_mutex;
 	struct dentry		*file;
 };
 
@@ -35,7 +35,7 @@ static LIST_HEAD(all_stat_sessions);
 static DEFINE_MUTEX(all_stat_sessions_mutex);
 
 /* The root directory for all stat files */
-static struct dentry *stat_dir;
+static struct dentry		*stat_dir;
 
 
 static void reset_stat_session(struct tracer_stat_session *session)
@@ -56,71 +56,6 @@ static void destroy_session(struct tracer_stat_session *session)
 	kfree(session);
 }
 
-
-static int init_stat_file(struct tracer_stat_session *session);
-
-int register_stat_tracer(struct tracer_stat *trace)
-{
-	struct tracer_stat_session *session, *node, *tmp;
-	int ret;
-
-	if (!trace)
-		return -EINVAL;
-
-	if (!trace->stat_start || !trace->stat_next || !trace->stat_show)
-		return -EINVAL;
-
-	/* Already registered? */
-	mutex_lock(&all_stat_sessions_mutex);
-	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
-		if (node->ts == trace) {
-			mutex_unlock(&all_stat_sessions_mutex);
-			return -EINVAL;
-		}
-	}
-	mutex_unlock(&all_stat_sessions_mutex);
-
-	/* Init the session */
-	session = kmalloc(sizeof(struct tracer_stat_session), GFP_KERNEL);
-	if (!session)
-		return -ENOMEM;
-
-	session->ts = trace;
-	INIT_LIST_HEAD(&session->session_list);
-	INIT_LIST_HEAD(&session->stat_list);
-	mutex_init(&session->stat_mutex);
-	session->file = NULL;
-
-	ret = init_stat_file(session);
-	if (ret) {
-		destroy_session(session);
-		return ret;
-	}
-
-	/* Register */
-	mutex_lock(&all_stat_sessions_mutex);
-	list_add_tail(&session->session_list, &all_stat_sessions);
-	mutex_unlock(&all_stat_sessions_mutex);
-
-	return 0;
-}
-
-void unregister_stat_tracer(struct tracer_stat *trace)
-{
-	struct tracer_stat_session *node, *tmp;
-
-	mutex_lock(&all_stat_sessions_mutex);
-	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
-		if (node->ts == trace) {
-			list_del(&node->session_list);
-			destroy_session(node);
-			break;
-		}
-	}
-	mutex_unlock(&all_stat_sessions_mutex);
-}
-
-
 /*
  * For tracers that don't provide a stat_cmp callback.
  * This one will force an immediate insertion on tail of
@@ -252,10 +187,10 @@ static int stat_seq_show(struct seq_file *s, void *v)
 }
 
 static const struct seq_operations trace_stat_seq_ops = {
-	.start = stat_seq_start,
-	.next = stat_seq_next,
-	.stop = stat_seq_stop,
-	.show = stat_seq_show
+	.start		= stat_seq_start,
+	.next		= stat_seq_next,
+	.stop		= stat_seq_stop,
+	.show		= stat_seq_show
 };
 
 /* The session stat is refilled and resorted at each stat file opening */
@@ -275,7 +210,6 @@ static int tracing_stat_open(struct inode *inode, struct file *file)
 	return ret;
 }
 
-
 /*
  * Avoid consuming memory with our now useless list.
  */
@@ -322,3 +256,64 @@ static int init_stat_file(struct tracer_stat_session *session)
 		return -ENOMEM;
 	return 0;
 }
+
+int register_stat_tracer(struct tracer_stat *trace)
+{
+	struct tracer_stat_session *session, *node, *tmp;
+	int ret;
+
+	if (!trace)
+		return -EINVAL;
+
+	if (!trace->stat_start || !trace->stat_next || !trace->stat_show)
+		return -EINVAL;
+
+	/* Already registered? */
+	mutex_lock(&all_stat_sessions_mutex);
+	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
+		if (node->ts == trace) {
+			mutex_unlock(&all_stat_sessions_mutex);
+			return -EINVAL;
+		}
+	}
+	mutex_unlock(&all_stat_sessions_mutex);
+
+	/* Init the session */
+	session = kmalloc(sizeof(struct tracer_stat_session), GFP_KERNEL);
+	if (!session)
+		return -ENOMEM;
+
+	session->ts = trace;
+	INIT_LIST_HEAD(&session->session_list);
+	INIT_LIST_HEAD(&session->stat_list);
+	mutex_init(&session->stat_mutex);
+	session->file = NULL;
+
+	ret = init_stat_file(session);
+	if (ret) {
+		destroy_session(session);
+		return ret;
+	}
+
+	/* Register */
+	mutex_lock(&all_stat_sessions_mutex);
+	list_add_tail(&session->session_list, &all_stat_sessions);
+	mutex_unlock(&all_stat_sessions_mutex);
+
+	return 0;
+}
+
+void unregister_stat_tracer(struct tracer_stat *trace)
+{
+	struct tracer_stat_session *node, *tmp;
+
+	mutex_lock(&all_stat_sessions_mutex);
+	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
+		if (node->ts == trace) {
+			list_del(&node->session_list);
+			destroy_session(node);
+			break;
+		}
+	}
+	mutex_unlock(&all_stat_sessions_mutex);
+}

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-01-15 10:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-15  1:57 [PATCH] tracing/ftrace: add missing unlock in register_stat_tracer() Steven Rostedt
2009-01-15 10:02 ` Ingo Molnar
2009-01-15 10:14   ` Steven Rostedt
2009-01-15 10:25 ` Steven Rostedt
2009-01-15 10:26   ` Steven Rostedt
2009-01-15 10:28   ` Ingo Molnar
2009-01-15 10:38     ` [PATCH] tracing: trace_stat.c cleanup Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox