All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ftrace: fix trace_marker output
@ 2009-11-16 19:56 Carsten Emde
  2009-11-16 22:15 ` Steven Rostedt
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Carsten Emde @ 2009-11-16 19:56 UTC (permalink / raw)
  To: LKML; +Cc: Steven Rostedt, Ingo Molnar, Frederic Weisbecker

When a string was written to <debugfs>/tracing/trace_marker, some
strange characters appeared in the trace output instead of the
string, since a vprint function erroneously called a vararg print
function with a va_list argument. This patch fixes the problem and
simplifies the related code.

Signed-off-by: Carsten Emde <C.Emde@osadl.org>

Index: linux-2.6.31.6-rt19/kernel/trace/trace.c
===================================================================
--- linux-2.6.31.6-rt19.orig/kernel/trace/trace.c
+++ linux-2.6.31.6-rt19/kernel/trace/trace.c
@@ -1376,10 +1376,11 @@ int trace_array_vprintk(struct trace_arr
 	pause_graph_tracing();
 	raw_local_irq_save(irq_flags);
 	__raw_spin_lock(&trace_buf_lock);
-	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
-
-	len = min(len, TRACE_BUF_SIZE-1);
-	trace_buf[len] = 0;
+	if (args == NULL) {
+		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
+		len = strlen(trace_buf);
+	} else
+		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
 
 	size = sizeof(*entry) + len + 1;
 	buffer = tr->buffer;
@@ -1388,10 +1389,10 @@ int trace_array_vprintk(struct trace_arr
 	if (!event)
 		goto out_unlock;
 	entry = ring_buffer_event_data(event);
-	entry->ip			= ip;
+	entry->ip = ip;
 
 	memcpy(&entry->buf, trace_buf, len);
-	entry->buf[len] = 0;
+	entry->buf[len] = '\0';
 	if (!filter_check_discard(call, entry, buffer, event))
 		ring_buffer_unlock_commit(buffer, event);
 
@@ -1408,7 +1409,7 @@ int trace_array_vprintk(struct trace_arr
 
 int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
 {
-	return trace_array_printk(&global_trace, ip, fmt, args);
+	return trace_array_vprintk(&global_trace, ip, fmt, args);
 }
 EXPORT_SYMBOL_GPL(trace_vprintk);
 
@@ -3336,22 +3337,11 @@ tracing_entries_write(struct file *filp,
 	return cnt;
 }
 
-static int mark_printk(const char *fmt, ...)
-{
-	int ret;
-	va_list args;
-	va_start(args, fmt);
-	ret = trace_vprintk(0, fmt, args);
-	va_end(args);
-	return ret;
-}
-
 static ssize_t
 tracing_mark_write(struct file *filp, const char __user *ubuf,
 					size_t cnt, loff_t *fpos)
 {
 	char *buf;
-	char *end;
 
 	if (tracing_disabled)
 		return -EINVAL;
@@ -3359,7 +3349,7 @@ tracing_mark_write(struct file *filp, co
 	if (cnt > TRACE_BUF_SIZE)
 		cnt = TRACE_BUF_SIZE;
 
-	buf = kmalloc(cnt + 1, GFP_KERNEL);
+	buf = kmalloc(cnt + 2, GFP_KERNEL);
 	if (buf == NULL)
 		return -ENOMEM;
 
@@ -3367,14 +3357,13 @@ tracing_mark_write(struct file *filp, co
 		kfree(buf);
 		return -EFAULT;
 	}
+	if (buf[cnt-1] != '\n') {
+		buf[cnt] = '\n';
+		buf[cnt+1] = '\0';
+	} else
+		buf[cnt] = '\0';
 
-	/* Cut from the first nil or newline. */
-	buf[cnt] = '\0';
-	end = strchr(buf, '\n');
-	if (end)
-		*end = '\0';
-
-	cnt = mark_printk("%s\n", buf);
+	cnt = trace_vprintk(0, buf, NULL);
 	kfree(buf);
 	*fpos += cnt;
 

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

* Re: [PATCH] ftrace: fix trace_marker output
  2009-11-16 19:56 [PATCH] ftrace: fix trace_marker output Carsten Emde
@ 2009-11-16 22:15 ` Steven Rostedt
  2009-11-17 14:18 ` Steven Rostedt
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: Steven Rostedt @ 2009-11-16 22:15 UTC (permalink / raw)
  To: Carsten Emde; +Cc: LKML, Ingo Molnar, Frederic Weisbecker

On Mon, 2009-11-16 at 20:56 +0100, Carsten Emde wrote:
> When a string was written to <debugfs>/tracing/trace_marker, some
> strange characters appeared in the trace output instead of the
> string, since a vprint function erroneously called a vararg print
> function with a va_list argument. This patch fixes the problem and
> simplifies the related code.
> 
> Signed-off-by: Carsten Emde <C.Emde@osadl.org>

Thanks Carsten! I'll pull this in. Perhaps this should go into 32.

-- Steve




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

* Re: [PATCH] ftrace: fix trace_marker output
  2009-11-16 19:56 [PATCH] ftrace: fix trace_marker output Carsten Emde
  2009-11-16 22:15 ` Steven Rostedt
@ 2009-11-17 14:18 ` Steven Rostedt
  2009-11-17 15:20 ` [PATCH][GIT PULL][v2.6.32] tracing: Fix " Steven Rostedt
  2009-11-22 10:24 ` [tip:tracing/urgent] " tip-bot for Carsten Emde
  3 siblings, 0 replies; 16+ messages in thread
From: Steven Rostedt @ 2009-11-17 14:18 UTC (permalink / raw)
  To: Carsten Emde; +Cc: LKML, Ingo Molnar, Frederic Weisbecker

On Mon, 2009-11-16 at 20:56 +0100, Carsten Emde wrote:
>  
> @@ -1408,7 +1409,7 @@ int trace_array_vprintk(struct trace_arr
>  
>  int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
>  {
> -	return trace_array_printk(&global_trace, ip, fmt, args);
> +	return trace_array_vprintk(&global_trace, ip, fmt, args);
>  }
>  EXPORT_SYMBOL_GPL(trace_vprintk);

Applying the patch, I found that this part is already fixed upstream.
But I'll add the rest of your patch since it does have other fixes.

Thanks,

-- Steve



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

* [PATCH][GIT PULL][v2.6.32] tracing: Fix trace_marker output
  2009-11-16 19:56 [PATCH] ftrace: fix trace_marker output Carsten Emde
  2009-11-16 22:15 ` Steven Rostedt
  2009-11-17 14:18 ` Steven Rostedt
@ 2009-11-17 15:20 ` Steven Rostedt
  2009-11-22 10:24 ` [tip:tracing/urgent] " tip-bot for Carsten Emde
  3 siblings, 0 replies; 16+ messages in thread
From: Steven Rostedt @ 2009-11-17 15:20 UTC (permalink / raw)
  To: Carsten Emde; +Cc: LKML, Ingo Molnar, Frederic Weisbecker


Ingo,

Think we may be able to slip this into 32?

Please pull the latest tip/tracing/urgent tree, which can be found at:

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


Carsten Emde (1):
      tracing: Fix trace_marker output

----
 kernel/trace/trace.c |   39 ++++++++++++++-------------------------
 1 files changed, 14 insertions(+), 25 deletions(-)
---------------------------
commit c13d2f7c3231e873f30db92b96c8caa48f100f33
Author: Carsten Emde <Carsten.Emde@osadl.org>
Date:   Mon Nov 16 20:56:13 2009 +0100

    tracing: Fix trace_marker output
    
    When a string was written to <debugfs>/tracing/trace_marker, some
    strange characters appeared in the trace output instead of the
    string, since a vprint function erroneously called a vararg print
    function with a va_list argument. This patch fixes the problem and
    simplifies the related code.
    
    Signed-off-by: Carsten Emde <C.Emde@osadl.org>
    LKML-Reference: <4B01AE5D.1010801@osadl.org>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 03c7fd5..12b49ca 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1361,10 +1361,11 @@ int trace_array_vprintk(struct trace_array *tr,
 	pause_graph_tracing();
 	raw_local_irq_save(irq_flags);
 	__raw_spin_lock(&trace_buf_lock);
-	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
-
-	len = min(len, TRACE_BUF_SIZE-1);
-	trace_buf[len] = 0;
+	if (args == NULL) {
+		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
+		len = strlen(trace_buf);
+	} else
+		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
 
 	size = sizeof(*entry) + len + 1;
 	buffer = tr->buffer;
@@ -1373,10 +1374,10 @@ int trace_array_vprintk(struct trace_array *tr,
 	if (!event)
 		goto out_unlock;
 	entry = ring_buffer_event_data(event);
-	entry->ip			= ip;
+	entry->ip = ip;
 
 	memcpy(&entry->buf, trace_buf, len);
-	entry->buf[len] = 0;
+	entry->buf[len] = '\0';
 	if (!filter_check_discard(call, entry, buffer, event))
 		ring_buffer_unlock_commit(buffer, event);
 
@@ -3319,22 +3320,11 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
 	return cnt;
 }
 
-static int mark_printk(const char *fmt, ...)
-{
-	int ret;
-	va_list args;
-	va_start(args, fmt);
-	ret = trace_vprintk(0, fmt, args);
-	va_end(args);
-	return ret;
-}
-
 static ssize_t
 tracing_mark_write(struct file *filp, const char __user *ubuf,
 					size_t cnt, loff_t *fpos)
 {
 	char *buf;
-	char *end;
 
 	if (tracing_disabled)
 		return -EINVAL;
@@ -3342,7 +3332,7 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
 	if (cnt > TRACE_BUF_SIZE)
 		cnt = TRACE_BUF_SIZE;
 
-	buf = kmalloc(cnt + 1, GFP_KERNEL);
+	buf = kmalloc(cnt + 2, GFP_KERNEL);
 	if (buf == NULL)
 		return -ENOMEM;
 
@@ -3350,14 +3340,13 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
 		kfree(buf);
 		return -EFAULT;
 	}
+	if (buf[cnt-1] != '\n') {
+		buf[cnt] = '\n';
+		buf[cnt+1] = '\0';
+	} else
+		buf[cnt] = '\0';
 
-	/* Cut from the first nil or newline. */
-	buf[cnt] = '\0';
-	end = strchr(buf, '\n');
-	if (end)
-		*end = '\0';
-
-	cnt = mark_printk("%s\n", buf);
+	cnt = trace_vprintk(0, buf, NULL);
 	kfree(buf);
 	*fpos += cnt;
 



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

* [tip:tracing/urgent] tracing: Fix trace_marker output
  2009-11-16 19:56 [PATCH] ftrace: fix trace_marker output Carsten Emde
                   ` (2 preceding siblings ...)
  2009-11-17 15:20 ` [PATCH][GIT PULL][v2.6.32] tracing: Fix " Steven Rostedt
@ 2009-11-22 10:24 ` tip-bot for Carsten Emde
  2009-12-06  5:13   ` Olof Johansson
  3 siblings, 1 reply; 16+ messages in thread
From: tip-bot for Carsten Emde @ 2009-11-22 10:24 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, rostedt, Carsten.Emde, tglx, C.Emde

Commit-ID:  c13d2f7c3231e873f30db92b96c8caa48f100f33
Gitweb:     http://git.kernel.org/tip/c13d2f7c3231e873f30db92b96c8caa48f100f33
Author:     Carsten Emde <Carsten.Emde@osadl.org>
AuthorDate: Mon, 16 Nov 2009 20:56:13 +0100
Committer:  Steven Rostedt <rostedt@goodmis.org>
CommitDate: Tue, 17 Nov 2009 09:19:06 -0500

tracing: Fix trace_marker output

When a string was written to <debugfs>/tracing/trace_marker, some
strange characters appeared in the trace output instead of the
string, since a vprint function erroneously called a vararg print
function with a va_list argument. This patch fixes the problem and
simplifies the related code.

Signed-off-by: Carsten Emde <C.Emde@osadl.org>
LKML-Reference: <4B01AE5D.1010801@osadl.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 kernel/trace/trace.c |   39 ++++++++++++++-------------------------
 1 files changed, 14 insertions(+), 25 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 03c7fd5..12b49ca 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1361,10 +1361,11 @@ int trace_array_vprintk(struct trace_array *tr,
 	pause_graph_tracing();
 	raw_local_irq_save(irq_flags);
 	__raw_spin_lock(&trace_buf_lock);
-	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
-
-	len = min(len, TRACE_BUF_SIZE-1);
-	trace_buf[len] = 0;
+	if (args == NULL) {
+		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
+		len = strlen(trace_buf);
+	} else
+		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
 
 	size = sizeof(*entry) + len + 1;
 	buffer = tr->buffer;
@@ -1373,10 +1374,10 @@ int trace_array_vprintk(struct trace_array *tr,
 	if (!event)
 		goto out_unlock;
 	entry = ring_buffer_event_data(event);
-	entry->ip			= ip;
+	entry->ip = ip;
 
 	memcpy(&entry->buf, trace_buf, len);
-	entry->buf[len] = 0;
+	entry->buf[len] = '\0';
 	if (!filter_check_discard(call, entry, buffer, event))
 		ring_buffer_unlock_commit(buffer, event);
 
@@ -3319,22 +3320,11 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
 	return cnt;
 }
 
-static int mark_printk(const char *fmt, ...)
-{
-	int ret;
-	va_list args;
-	va_start(args, fmt);
-	ret = trace_vprintk(0, fmt, args);
-	va_end(args);
-	return ret;
-}
-
 static ssize_t
 tracing_mark_write(struct file *filp, const char __user *ubuf,
 					size_t cnt, loff_t *fpos)
 {
 	char *buf;
-	char *end;
 
 	if (tracing_disabled)
 		return -EINVAL;
@@ -3342,7 +3332,7 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
 	if (cnt > TRACE_BUF_SIZE)
 		cnt = TRACE_BUF_SIZE;
 
-	buf = kmalloc(cnt + 1, GFP_KERNEL);
+	buf = kmalloc(cnt + 2, GFP_KERNEL);
 	if (buf == NULL)
 		return -ENOMEM;
 
@@ -3350,14 +3340,13 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
 		kfree(buf);
 		return -EFAULT;
 	}
+	if (buf[cnt-1] != '\n') {
+		buf[cnt] = '\n';
+		buf[cnt+1] = '\0';
+	} else
+		buf[cnt] = '\0';
 
-	/* Cut from the first nil or newline. */
-	buf[cnt] = '\0';
-	end = strchr(buf, '\n');
-	if (end)
-		*end = '\0';
-
-	cnt = mark_printk("%s\n", buf);
+	cnt = trace_vprintk(0, buf, NULL);
 	kfree(buf);
 	*fpos += cnt;
 

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

* Re: [tip:tracing/urgent] tracing: Fix trace_marker output
  2009-11-22 10:24 ` [tip:tracing/urgent] " tip-bot for Carsten Emde
@ 2009-12-06  5:13   ` Olof Johansson
  2009-12-06  9:24     ` Carsten Emde
  2009-12-06 13:02     ` Carsten Emde
  0 siblings, 2 replies; 16+ messages in thread
From: Olof Johansson @ 2009-12-06  5:13 UTC (permalink / raw)
  To: mingo, hpa, linux-kernel, rostedt, Carsten.Emde, tglx, C.Emde
  Cc: linux-tip-commits

Hi,

On Sun, Nov 22, 2009 at 10:24:48AM +0000, tip-bot for Carsten Emde wrote:
> Commit-ID:  c13d2f7c3231e873f30db92b96c8caa48f100f33
> Gitweb:     http://git.kernel.org/tip/c13d2f7c3231e873f30db92b96c8caa48f100f33
> Author:     Carsten Emde <Carsten.Emde@osadl.org>
> AuthorDate: Mon, 16 Nov 2009 20:56:13 +0100
> Committer:  Steven Rostedt <rostedt@goodmis.org>
> CommitDate: Tue, 17 Nov 2009 09:19:06 -0500
> 
> tracing: Fix trace_marker output
> 
> When a string was written to <debugfs>/tracing/trace_marker, some
> strange characters appeared in the trace output instead of the
> string, since a vprint function erroneously called a vararg print
> function with a va_list argument. This patch fixes the problem and
> simplifies the related code.

[...]

> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 03c7fd5..12b49ca 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -1361,10 +1361,11 @@ int trace_array_vprintk(struct trace_array *tr,
>  	pause_graph_tracing();
>  	raw_local_irq_save(irq_flags);
>  	__raw_spin_lock(&trace_buf_lock);
> -	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
> -
> -	len = min(len, TRACE_BUF_SIZE-1);
> -	trace_buf[len] = 0;
> +	if (args == NULL) {
> +		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
> +		len = strlen(trace_buf);
> +	} else
> +		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);


Comparing a va_list with NULL is bogus. It's supposed to be treated like
an opaque type and only be manipulated with va_* accessors.

I wouldn't really care much, but it broke builds on some ARM platforms:

kernel/trace/trace.c: In function 'trace_array_vprintk':
kernel/trace/trace.c:1364: error: invalid operands to binary == (have 'va_list' and 'void *')
kernel/trace/trace.c: In function 'tracing_mark_write':
kernel/trace/trace.c:3349: error: incompatible type for argument 3 of 'trace_vprintk'

I see no real graceful way of solving this. What is really needed is a
trace_puts to output a string without applying format parsing to it.

I am going to do the lazy thing here, define a trace_puts() and call the
vprintk innards with it instead of duplicating code. It's probably not
the most graceful solution to the problem, but reporting a bug with a
bad patch tends to be better than reporting it without one at all. Better
suggestions are appreciated.

Oh, and I haven't had a chance to actually test and make sure it does
what is expected, since I don't have a testcase for it.


Signed-off-by: Olof Johansson <olof@lixom.net>

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 874f289..9b5bb4c 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1361,11 +1361,7 @@ int trace_array_vprintk(struct trace_array *tr,
 	pause_graph_tracing();
 	raw_local_irq_save(irq_flags);
 	__raw_spin_lock(&trace_buf_lock);
-	if (args == NULL) {
-		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
-		len = strlen(trace_buf);
-	} else
-		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
+	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
 
 	size = sizeof(*entry) + len + 1;
 	buffer = tr->buffer;
@@ -1398,6 +1394,22 @@ int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
 }
 EXPORT_SYMBOL_GPL(trace_vprintk);
 
+static int __trace_puts(unsigned long ip, ...)
+{
+	va_list ap;
+	int ret;
+
+	va_start(ap, ip);
+	ret = trace_vprintk(ip, "%s", ap);
+	va_end(ap);
+	return ret;
+}
+
+static int trace_puts(unsigned long ip, const char *str)
+{
+	return __trace_puts(ip, str);
+}
+
 enum trace_file_type {
 	TRACE_FILE_LAT_FMT	= 1,
 	TRACE_FILE_ANNOTATE	= 2,
@@ -3346,7 +3358,7 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
 	} else
 		buf[cnt] = '\0';
 
-	cnt = trace_vprintk(0, buf, NULL);
+	cnt = trace_puts(0, buf);
 	kfree(buf);
 	*fpos += cnt;
 

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

* Re: [tip:tracing/urgent] tracing: Fix trace_marker output
  2009-12-06  5:13   ` Olof Johansson
@ 2009-12-06  9:24     ` Carsten Emde
  2009-12-06 13:02     ` Carsten Emde
  1 sibling, 0 replies; 16+ messages in thread
From: Carsten Emde @ 2009-12-06  9:24 UTC (permalink / raw)
  To: Olof Johansson; +Cc: mingo, hpa, linux-kernel, rostedt, tglx, linux-tip-commits

Olof,

> On Sun, Nov 22, 2009 at 10:24:48AM +0000, tip-bot for Carsten Emde wrote:
>> Commit-ID:  c13d2f7c3231e873f30db92b96c8caa48f100f33
>> Gitweb:     http://git.kernel.org/tip/c13d2f7c3231e873f30db92b96c8caa48f100f33
>> Author:     Carsten Emde<Carsten.Emde@osadl.org>
>> AuthorDate: Mon, 16 Nov 2009 20:56:13 +0100
>> Committer:  Steven Rostedt<rostedt@goodmis.org>
>> CommitDate: Tue, 17 Nov 2009 09:19:06 -0500
>> tracing: Fix trace_marker output
>> When a string was written to<debugfs>/tracing/trace_marker, some
>> strange characters appeared in the trace output instead of the
>> string, since a vprint function erroneously called a vararg print
>> function with a va_list argument. This patch fixes the problem and
>> simplifies the related code.
>
> [...]
>
>> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
>> index 03c7fd5..12b49ca 100644
>> --- a/kernel/trace/trace.c
>> +++ b/kernel/trace/trace.c
>> @@ -1361,10 +1361,11 @@ int trace_array_vprintk(struct trace_array *tr,
>>   	pause_graph_tracing();
>>   	raw_local_irq_save(irq_flags);
>>   	__raw_spin_lock(&trace_buf_lock);
>> -	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
>> -
>> -	len = min(len, TRACE_BUF_SIZE-1);
>> -	trace_buf[len] = 0;
>> +	if (args == NULL) {
>> +		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
>> +		len = strlen(trace_buf);
>> +	} else
>> +		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
> Comparing a va_list with NULL is bogus. It's supposed to be treated like
> an opaque type and only be manipulated with va_* accessors.
>
> I wouldn't really care much, but it broke builds on some ARM platforms:
>
> kernel/trace/trace.c: In function 'trace_array_vprintk':
> kernel/trace/trace.c:1364: error: invalid operands to binary == (have 'va_list' and 'void *')
> kernel/trace/trace.c: In function 'tracing_mark_write':
> kernel/trace/trace.c:3349: error: incompatible type for argument 3 of 'trace_vprintk'
Oops, sorry. Didn't know that the gcc warn/error level is so much 
different across platforms.

>[..]
> Oh, and I haven't had a chance to actually test and make sure it does
> what is expected, since I don't have a testcase for it.
The testcase is:
# cd /sys/kernel/debug/tracing/
[root@deliv1 tracing]# echo "I am a marker" >trace_marker
[root@deliv1 tracing]# tail -1 trace
             bash-6347  [002] 303160.793532: 0: I am a marker

> +	ret = trace_vprintk(ip, "%s", ap);
This prevents the '%' character to be used in an output string. If used, 
it may horribly crash the kernel.

I'll investigate the situation further and try to come back with a 
better solution.

	Carsten.

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

* Re: [tip:tracing/urgent] tracing: Fix trace_marker output
  2009-12-06  5:13   ` Olof Johansson
  2009-12-06  9:24     ` Carsten Emde
@ 2009-12-06 13:02     ` Carsten Emde
  2009-12-06 17:50       ` Olof Johansson
                         ` (2 more replies)
  1 sibling, 3 replies; 16+ messages in thread
From: Carsten Emde @ 2009-12-06 13:02 UTC (permalink / raw)
  To: Olof Johansson; +Cc: mingo, hpa, linux-kernel, rostedt, tglx, linux-tip-commits

Olof,

> On Sun, Nov 22, 2009 at 10:24:48AM +0000, tip-bot for Carsten Emde wrote:
>> Commit-ID:  c13d2f7c3231e873f30db92b96c8caa48f100f33
>> Gitweb:     http://git.kernel.org/tip/c13d2f7c3231e873f30db92b96c8caa48f100f33
>> Author:     Carsten Emde <Carsten.Emde@osadl.org>
>> AuthorDate: Mon, 16 Nov 2009 20:56:13 +0100
>> Committer:  Steven Rostedt <rostedt@goodmis.org>
>> CommitDate: Tue, 17 Nov 2009 09:19:06 -0500
>>
>> tracing: Fix trace_marker output
>>
>> When a string was written to <debugfs>/tracing/trace_marker, some
>> strange characters appeared in the trace output instead of the
>> string, since a vprint function erroneously called a vararg print
>> function with a va_list argument. This patch fixes the problem and
>> simplifies the related code.
> 
> [...]
> 
>> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
>> index 03c7fd5..12b49ca 100644
>> --- a/kernel/trace/trace.c
>> +++ b/kernel/trace/trace.c
>> @@ -1361,10 +1361,11 @@ int trace_array_vprintk(struct trace_array *tr,
>>  	pause_graph_tracing();
>>  	raw_local_irq_save(irq_flags);
>>  	__raw_spin_lock(&trace_buf_lock);
>> -	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
>> -
>> -	len = min(len, TRACE_BUF_SIZE-1);
>> -	trace_buf[len] = 0;
>> +	if (args == NULL) {
>> +		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
>> +		len = strlen(trace_buf);
>> +	} else
>> +		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
> 
> 
> Comparing a va_list with NULL is bogus. It's supposed to be treated like
> an opaque type and only be manipulated with va_* accessors.
> 
> I wouldn't really care much, but it broke builds on some ARM platforms:
> 
> kernel/trace/trace.c: In function 'trace_array_vprintk':
> kernel/trace/trace.c:1364: error: invalid operands to binary == (have 'va_list' and 'void *')
> kernel/trace/trace.c: In function 'tracing_mark_write':
> kernel/trace/trace.c:3349: error: incompatible type for argument 3 of 'trace_vprintk'
Having looked at other possible solutions, I find that the best thing to do
is to revert this part of the patch. Sorry that I didn't check it on ARM
platforms.

	Carsten.

-=-

This patch partly reverts c13d2f7c3231e873f30db92b96c8caa48f100f33 and
re-installs Steven's original mark_printk() mechanism.

Signed-off-by: Carsten Emde <C.Emde@osadl.org>

Index: linux-2.6-tip/kernel/trace/trace.c
===================================================================
--- linux-2.6-tip.orig/kernel/trace/trace.c
+++ linux-2.6-tip/kernel/trace/trace.c
@@ -1361,11 +1361,7 @@ int trace_array_vprintk(struct trace_arr
 	pause_graph_tracing();
 	raw_local_irq_save(irq_flags);
 	__raw_spin_lock(&trace_buf_lock);
-	if (args == NULL) {
-		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
-		len = strlen(trace_buf);
-	} else
-		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
+	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
 
 	size = sizeof(*entry) + len + 1;
 	buffer = tr->buffer;
@@ -3320,6 +3316,16 @@ tracing_entries_write(struct file *filp,
 	return cnt;
 }
 
+static int mark_printk(const char *fmt, ...)
+{
+	int ret;
+	va_list args;
+	va_start(args, fmt);
+	ret = trace_vprintk(0, fmt, args);
+	va_end(args);
+	return ret;
+}
+
 static ssize_t
 tracing_mark_write(struct file *filp, const char __user *ubuf,
 					size_t cnt, loff_t *fpos)
@@ -3346,7 +3352,7 @@ tracing_mark_write(struct file *filp, co
 	} else
 		buf[cnt] = '\0';
 
-	cnt = trace_vprintk(0, buf, NULL);
+	cnt = mark_printk("%s", buf);
 	kfree(buf);
 	*fpos += cnt;
 

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

* Re: [tip:tracing/urgent] tracing: Fix trace_marker output
  2009-12-06 13:02     ` Carsten Emde
@ 2009-12-06 17:50       ` Olof Johansson
  2009-12-09  4:19       ` [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk() Steven Rostedt
  2009-12-10  7:49       ` [tip:tracing/core] " tip-bot for Carsten Emde
  2 siblings, 0 replies; 16+ messages in thread
From: Olof Johansson @ 2009-12-06 17:50 UTC (permalink / raw)
  To: Carsten Emde; +Cc: mingo, hpa, linux-kernel, rostedt, tglx, linux-tip-commits

On Sun, Dec 06, 2009 at 02:02:44PM +0100, Carsten Emde wrote:
> Olof,
> 
[...]
> Having looked at other possible solutions, I find that the best thing to do
> is to revert this part of the patch. Sorry that I didn't check it on ARM
> platforms.

Thanks, no worries. I figured there was a better way to fix it but
including a bad patch tends to be better than not including one :)


-Olof


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

* [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
  2009-12-06 13:02     ` Carsten Emde
  2009-12-06 17:50       ` Olof Johansson
@ 2009-12-09  4:19       ` Steven Rostedt
  2009-12-09  5:56         ` Ingo Molnar
  2009-12-10  7:49       ` [tip:tracing/core] " tip-bot for Carsten Emde
  2 siblings, 1 reply; 16+ messages in thread
From: Steven Rostedt @ 2009-12-09  4:19 UTC (permalink / raw)
  To: LKML; +Cc: Carsten Emde, Olof Johansson, hpa, linux-kernel, tglx, Ingo Molnar


Hi Ingo,

This is an urgent fix that fixes a ARM build breakage. It is based on
the last pull request I had that fixes the function graph tracer output.


Ingo,

Please pull the latest tip/tracing/core2 tree, which can be found at:

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


Carsten Emde (1):
      tracing: Remove comparing of NULL to va_list in trace_array_vprintk()

----
 kernel/trace/trace.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)
---------------------------
commit efcf61abeb355273bc8933faf426adc366b23153
Author: Carsten Emde <Carsten.Emde@osadl.org>
Date:   Sun Dec 6 14:02:44 2009 +0100

    tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
    
    Olof Johansson stated the following:
    
      Comparing a va_list with NULL is bogus. It's supposed to be treated like
      an opaque type and only be manipulated with va_* accessors.
    
    Olof noticed that this code broke the ARM builds:
    
        kernel/trace/trace.c: In function 'trace_array_vprintk':
        kernel/trace/trace.c:1364: error: invalid operands to binary == (have 'va_list' and 'void *')
        kernel/trace/trace.c: In function 'tracing_mark_write':
        kernel/trace/trace.c:3349: error: incompatible type for argument 3 of 'trace_vprintk'
    
    This patch partly reverts c13d2f7c3231e873f30db92b96c8caa48f100f33 and
    re-installs the original mark_printk() mechanism.
    
    Reported-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Carsten Emde <C.Emde@osadl.org>
    LKML-Reference: <4B1BAB74.104@osadl.org>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 596dcf2..bf84e1a 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1361,11 +1361,7 @@ int trace_array_vprintk(struct trace_array *tr,
 	pause_graph_tracing();
 	raw_local_irq_save(irq_flags);
 	__raw_spin_lock(&trace_buf_lock);
-	if (args == NULL) {
-		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
-		len = strlen(trace_buf);
-	} else
-		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
+	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
 
 	size = sizeof(*entry) + len + 1;
 	buffer = tr->buffer;
@@ -3353,6 +3349,16 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
 	return cnt;
 }
 
+static int mark_printk(const char *fmt, ...)
+{
+	int ret;
+	va_list args;
+	va_start(args, fmt);
+	ret = trace_vprintk(0, fmt, args);
+	va_end(args);
+	return ret;
+}
+
 static ssize_t
 tracing_mark_write(struct file *filp, const char __user *ubuf,
 					size_t cnt, loff_t *fpos)
@@ -3379,7 +3385,7 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
 	} else
 		buf[cnt] = '\0';
 
-	cnt = trace_vprintk(0, buf, NULL);
+	cnt = mark_printk("%s", buf);
 	kfree(buf);
 	*fpos += cnt;
 



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

* Re: [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
  2009-12-09  4:19       ` [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk() Steven Rostedt
@ 2009-12-09  5:56         ` Ingo Molnar
  2009-12-09  6:11           ` Ingo Molnar
  0 siblings, 1 reply; 16+ messages in thread
From: Ingo Molnar @ 2009-12-09  5:56 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: LKML, Carsten Emde, Olof Johansson, hpa, tglx


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

> Hi Ingo,
> 
> This is an urgent fix that fixes a ARM build breakage. It is based on
> the last pull request I had that fixes the function graph tracer output.
> 
> 
> Ingo,
> 
> Please pull the latest tip/tracing/core2 tree, which can be found at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git
> tip/tracing/core2
> 
> 
> Carsten Emde (1):
>       tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
> 
> ----
>  kernel/trace/trace.c |   18 ++++++++++++------
>  1 files changed, 12 insertions(+), 6 deletions(-)

Pulled, thanks Steve!

	Ingo

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

* Re: [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
  2009-12-09  5:56         ` Ingo Molnar
@ 2009-12-09  6:11           ` Ingo Molnar
  2009-12-09  6:15             ` Ingo Molnar
  2009-12-09 18:05             ` Steven Rostedt
  0 siblings, 2 replies; 16+ messages in thread
From: Ingo Molnar @ 2009-12-09  6:11 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: LKML, Carsten Emde, Olof Johansson, hpa, tglx


-tip testing found that the Alpha defconfig fails to build. (error log 
attached below)

To fix this bug i have unpulled this commit for now:

 efcf61a: tracing: Remove comparing of NULL to va_list in trace_array_vprintk()

Thanks,

	Ingo

---------------->
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/init/noinitramfs.c:23:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/init/main.c:16:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
cc1: warnings being treated as errors
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/arch/alpha/kernel/osf_sys.c:20:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: error: no return statement in function returning non-void
cc1: warnings being treated as errors
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/arch/alpha/kernel/alpha_ksyms.c:15:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: error: no return statement in function returning non-void
make[2]: *** [arch/alpha/kernel/alpha_ksyms.o] Error 1
make[2]: *** Waiting for unfinished jobs....
cc1: warnings being treated as errors
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/arch/alpha/kernel/signal.c:22:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: error: no return statement in function returning non-void
make[2]: *** [arch/alpha/kernel/osf_sys.o] Error 1
make[2]: *** [arch/alpha/kernel/signal.o] Error 1
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/init/do_mounts.h:4,
                 from /home/mingo/tip/init/do_mounts.c:23:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/exec_domain.c:18:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/sched.c:62:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/fork.c:38:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/printk.c:34:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/itimer.c:11:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/fadvise.c:19:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
make[1]: *** [arch/alpha/kernel] Error 2
make[1]: *** Waiting for unfinished jobs....
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/exit.c:36:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/capability.c:15:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/filemap.c:32:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/sysctl.c:45:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/ptrace.c:23:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/timer.c:36:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/page-writeback.c:34:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/signal.c:21:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/kmod.c:23:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/open.c:28:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/sysctl_binary.c:7:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/read_write.c:16:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/pid.c:38:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/super.c:33:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/stat.c:15:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/posix-timers.c:45:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/fcntl.c:7:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/exec.c:49:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/pipe.c:20:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/ioctl.c:7:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/namei.c:28:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/select.c:19:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/readdir.c:17:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/fremap.c:17:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/hrtimer.c:39:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/madvise.c:10:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/mincore.c:14:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/dcache.c:17:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/mmap.c:16:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/mlock.c:15:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/mremap.c:21:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/mprotect.c:21:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/msync.c:14:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/namespace.c:11:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/groups.c:8:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/filesystems.c:9:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/futex.c:56:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
/home/mingo/tip/kernel/irq/handle.c:437:3: warning: #warning __do_IRQ is deprecated. Please convert to proper flow handlers
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/xattr.c:17:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/kernel/module.c:21:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/mm/swapfile.c:30:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/splice.c:30:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/sync.c:11:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/utimes.c:10:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/kernel/time.c:35:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/buffer.c:22:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/ioprio.c:26:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/notify/inotify/inotify_user.c:38:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/eventpoll.c:28:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/signalfd.c:30:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/timerfd.c:23:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/eventfd.c:17:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/locks.c:126:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/aio.c:17:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
                 from /home/mingo/tip/include/trace/syscall.h:6,
                 from /home/mingo/tip/include/linux/syscalls.h:71,
                 from /home/mingo/tip/fs/nfsctl.c:18:
/home/mingo/tip/include/linux/trace_seq.h: In function 'trace_print_seq':
/home/mingo/tip/include/linux/trace_seq.h:62: warning: no return statement in function returning non-void
make[1]: *** wait: No child processes.  Stop.
make: *** [sub-make] Error 2


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

* Re: [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
  2009-12-09  6:11           ` Ingo Molnar
@ 2009-12-09  6:15             ` Ingo Molnar
  2009-12-09 14:06               ` Steven Rostedt
  2009-12-09 18:05             ` Steven Rostedt
  1 sibling, 1 reply; 16+ messages in thread
From: Ingo Molnar @ 2009-12-09  6:15 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: LKML, Carsten Emde, Olof Johansson, hpa, tglx


* Ingo Molnar <mingo@elte.hu> wrote:

>  efcf61a: tracing: Remove comparing of NULL to va_list in trace_array_vprintk()

the real culprit was:

  6e0573f: tracing: Buffer the output of seq_file in case of filled buffer

so i kept this commit:

  c521efd: tracing: Add pipe_close interface

and skipped the rest for now - please resend if this is fixed.

	Ingo

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

* Re: [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
  2009-12-09  6:15             ` Ingo Molnar
@ 2009-12-09 14:06               ` Steven Rostedt
  0 siblings, 0 replies; 16+ messages in thread
From: Steven Rostedt @ 2009-12-09 14:06 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: LKML, Carsten Emde, Olof Johansson, hpa, tglx

On Wed, 2009-12-09 at 07:15 +0100, Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
> 
> >  efcf61a: tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
> 
> the real culprit was:
> 
>   6e0573f: tracing: Buffer the output of seq_file in case of filled buffer
> 
> so i kept this commit:
> 
>   c521efd: tracing: Add pipe_close interface
> 
> and skipped the rest for now - please resend if this is fixed.
> 

I'll get this fixed today.

Thanks!

-- Steve



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

* Re: [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
  2009-12-09  6:11           ` Ingo Molnar
  2009-12-09  6:15             ` Ingo Molnar
@ 2009-12-09 18:05             ` Steven Rostedt
  1 sibling, 0 replies; 16+ messages in thread
From: Steven Rostedt @ 2009-12-09 18:05 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: LKML, Carsten Emde, Olof Johansson, hpa, tglx

On Wed, 2009-12-09 at 07:11 +0100, Ingo Molnar wrote:
> -tip testing found that the Alpha defconfig fails to build. (error log 
> attached below)
> 
> To fix this bug i have unpulled this commit for now:
> 
>  efcf61a: tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
> 
> Thanks,
> 
> 	Ingo
> 
> ---------------->
> In file included from /home/mingo/tip/include/linux/ftrace_event.h:5,
>                  from /home/mingo/tip/include/trace/syscall.h:6,
>                  from /home/mingo/tip/include/linux/syscalls.h:71,
>                  from /home/mingo/tip/init/noinitramfs.c:23:

Ah, this was caused by the !CONFIG_TRACING path:

-static inline void trace_print_seq(struct seq_file *m, struct trace_seq *s)
+static inline int trace_print_seq(struct seq_file *m, struct trace_seq *s)
{
}

Will fix.

Thanks,

-- Steve



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

* [tip:tracing/core] tracing: Remove comparing of NULL to va_list in trace_array_vprintk()
  2009-12-06 13:02     ` Carsten Emde
  2009-12-06 17:50       ` Olof Johansson
  2009-12-09  4:19       ` [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk() Steven Rostedt
@ 2009-12-10  7:49       ` tip-bot for Carsten Emde
  2 siblings, 0 replies; 16+ messages in thread
From: tip-bot for Carsten Emde @ 2009-12-10  7:49 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, olof, rostedt, Carsten.Emde, tglx, C.Emde

Commit-ID:  f2942487ffb0c0a80b2312f667ea30dd55a24bb0
Gitweb:     http://git.kernel.org/tip/f2942487ffb0c0a80b2312f667ea30dd55a24bb0
Author:     Carsten Emde <Carsten.Emde@osadl.org>
AuthorDate: Sun, 6 Dec 2009 14:02:44 +0100
Committer:  Steven Rostedt <rostedt@goodmis.org>
CommitDate: Wed, 9 Dec 2009 14:20:08 -0500

tracing: Remove comparing of NULL to va_list in trace_array_vprintk()

Olof Johansson stated the following:

  Comparing a va_list with NULL is bogus. It's supposed to be treated like
  an opaque type and only be manipulated with va_* accessors.

Olof noticed that this code broke the ARM builds:

    kernel/trace/trace.c: In function 'trace_array_vprintk':
    kernel/trace/trace.c:1364: error: invalid operands to binary == (have 'va_list' and 'void *')
    kernel/trace/trace.c: In function 'tracing_mark_write':
    kernel/trace/trace.c:3349: error: incompatible type for argument 3 of 'trace_vprintk'

This patch partly reverts c13d2f7c3231e873f30db92b96c8caa48f100f33 and
re-installs the original mark_printk() mechanism.

Reported-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
LKML-Reference: <4B1BAB74.104@osadl.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 kernel/trace/trace.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 484114d..88bd9ae 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1361,11 +1361,7 @@ int trace_array_vprintk(struct trace_array *tr,
 	pause_graph_tracing();
 	raw_local_irq_save(irq_flags);
 	__raw_spin_lock(&trace_buf_lock);
-	if (args == NULL) {
-		strncpy(trace_buf, fmt, TRACE_BUF_SIZE);
-		len = strlen(trace_buf);
-	} else
-		len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
+	len = vsnprintf(trace_buf, TRACE_BUF_SIZE, fmt, args);
 
 	size = sizeof(*entry) + len + 1;
 	buffer = tr->buffer;
@@ -3353,6 +3349,16 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
 	return cnt;
 }
 
+static int mark_printk(const char *fmt, ...)
+{
+	int ret;
+	va_list args;
+	va_start(args, fmt);
+	ret = trace_vprintk(0, fmt, args);
+	va_end(args);
+	return ret;
+}
+
 static ssize_t
 tracing_mark_write(struct file *filp, const char __user *ubuf,
 					size_t cnt, loff_t *fpos)
@@ -3379,7 +3385,7 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
 	} else
 		buf[cnt] = '\0';
 
-	cnt = trace_vprintk(0, buf, NULL);
+	cnt = mark_printk("%s", buf);
 	kfree(buf);
 	*fpos += cnt;
 

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

end of thread, other threads:[~2009-12-10  7:50 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-16 19:56 [PATCH] ftrace: fix trace_marker output Carsten Emde
2009-11-16 22:15 ` Steven Rostedt
2009-11-17 14:18 ` Steven Rostedt
2009-11-17 15:20 ` [PATCH][GIT PULL][v2.6.32] tracing: Fix " Steven Rostedt
2009-11-22 10:24 ` [tip:tracing/urgent] " tip-bot for Carsten Emde
2009-12-06  5:13   ` Olof Johansson
2009-12-06  9:24     ` Carsten Emde
2009-12-06 13:02     ` Carsten Emde
2009-12-06 17:50       ` Olof Johansson
2009-12-09  4:19       ` [PATCH][GIT PULL][v2.6.33] tracing: Remove comparing of NULL to va_list in trace_array_vprintk() Steven Rostedt
2009-12-09  5:56         ` Ingo Molnar
2009-12-09  6:11           ` Ingo Molnar
2009-12-09  6:15             ` Ingo Molnar
2009-12-09 14:06               ` Steven Rostedt
2009-12-09 18:05             ` Steven Rostedt
2009-12-10  7:49       ` [tip:tracing/core] " tip-bot for Carsten Emde

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.