2009-07-11 07:16:22

by Roland Dreier

[permalink] [raw]
Subject: [PATCH] x86: Remove spurious printk level from segfault message

Since commit 5fd29d6c ("printk: clean up handling of log-levels and
newlines"), the kernel logs segfaults like:

<6>gnome-power-man[24509]: segfault at 20 ip 00007f9d4950465a sp 00007fffbb50fc70 error 4 in libgobject-2.0.so.0.2103.0[7f9d494f7000+45000]

with the extra "<6>" being KERN_INFO. This happens because the printk
in show_signal_msg() started with KERN_CONT and then used "%s" to pass
in the real level; and KERN_CONT is no longer an empty string, and
printk only pays attention to the level at the very beginning of the
format string.

Therefore, remove the KERN_CONT from this printk, since it is now
actively causing problems (and never really made any sense).

Signed-off-by: Roland Dreier <[email protected]>
---
arch/x86/mm/fault.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 85307cc..bfae139 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -697,7 +697,7 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code,
if (!printk_ratelimit())
return;

- printk(KERN_CONT "%s%s[%d]: segfault at %lx ip %p sp %p error %lx",
+ printk("%s%s[%d]: segfault at %lx ip %p sp %p error %lx",
task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG,
tsk->comm, task_pid_nr(tsk), address,
(void *)regs->ip, (void *)regs->sp, error_code);


2009-07-11 07:57:35

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86: Remove spurious printk level from segfault message


* Roland Dreier <[email protected]> wrote:

> Since commit 5fd29d6c ("printk: clean up handling of log-levels and
> newlines"), the kernel logs segfaults like:
>
> <6>gnome-power-man[24509]: segfault at 20 ip 00007f9d4950465a sp 00007fffbb50fc70 error 4 in libgobject-2.0.so.0.2103.0[7f9d494f7000+45000]
>
> with the extra "<6>" being KERN_INFO. This happens because the printk
> in show_signal_msg() started with KERN_CONT and then used "%s" to pass
> in the real level; and KERN_CONT is no longer an empty string, and
> printk only pays attention to the level at the very beginning of the
> format string.
>
> Therefore, remove the KERN_CONT from this printk, since it is now
> actively causing problems (and never really made any sense).

Indeed, this particular KERN_CONT never made any sense. It's good it
has some active role now. Applied to tip:x86/urgent, thanks Roland.

Ingo

2009-07-11 08:03:21

by Roland Dreier

[permalink] [raw]
Subject: [tip:x86/urgent] x86: Remove spurious printk level from segfault message

Commit-ID: a1a08d1cb0ab148fd74216e4c0b4d4db18fe62c6
Gitweb: http://git.kernel.org/tip/a1a08d1cb0ab148fd74216e4c0b4d4db18fe62c6
Author: Roland Dreier <[email protected]>
AuthorDate: Sat, 11 Jul 2009 00:10:04 -0700
Committer: Ingo Molnar <[email protected]>
CommitDate: Sat, 11 Jul 2009 09:56:19 +0200

x86: Remove spurious printk level from segfault message

Since commit 5fd29d6c ("printk: clean up handling of log-levels
and newlines"), the kernel logs segfaults like:

<6>gnome-power-man[24509]: segfault at 20 ip 00007f9d4950465a sp 00007fffbb50fc70 error 4 in libgobject-2.0.so.0.2103.0[7f9d494f7000+45000]

with the extra "<6>" being KERN_INFO. This happens because the
printk in show_signal_msg() started with KERN_CONT and then
used "%s" to pass in the real level; and KERN_CONT is no longer
an empty string, and printk only pays attention to the level at
the very beginning of the format string.

Therefore, remove the KERN_CONT from this printk, since it is
now actively causing problems (and never really made any
sense).

Signed-off-by: Roland Dreier <[email protected]>
Cc: Linus Torvalds <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>


---
arch/x86/mm/fault.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 85307cc..bfae139 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -697,7 +697,7 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code,
if (!printk_ratelimit())
return;

- printk(KERN_CONT "%s%s[%d]: segfault at %lx ip %p sp %p error %lx",
+ printk("%s%s[%d]: segfault at %lx ip %p sp %p error %lx",
task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG,
tsk->comm, task_pid_nr(tsk), address,
(void *)regs->ip, (void *)regs->sp, error_code);