public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: suppress stack overrun message for init_task
@ 2009-11-20 14:00 Jan Beulich
  2009-11-21 10:17 ` Américo Wang
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Jan Beulich @ 2009-11-20 14:00 UTC (permalink / raw)
  To: mingo, tglx, hpa; +Cc: linux-kernel

init_task doesn't get its stack end location set to STACK_END_MAGIC,
and hence the message is confusing rather than helpful in this case.

Signed-off-by: Jan Beulich <jbeulich@novell.com>

---
 arch/x86/mm/fault.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.32-rc8/arch/x86/mm/fault.c
+++ 2.6.32-rc8-x86-init-task-stack/arch/x86/mm/fault.c
@@ -658,7 +658,7 @@ no_context(struct pt_regs *regs, unsigne
 	show_fault_oops(regs, error_code, address);
 
 	stackend = end_of_stack(tsk);
-	if (*stackend != STACK_END_MAGIC)
+	if (tsk != &init_task && *stackend != STACK_END_MAGIC)
 		printk(KERN_ALERT "Thread overran stack, or stack corrupted\n");
 
 	tsk->thread.cr2		= address;




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

* Re: [PATCH] x86: suppress stack overrun message for init_task
  2009-11-20 14:00 [PATCH] x86: suppress stack overrun message for init_task Jan Beulich
@ 2009-11-21 10:17 ` Américo Wang
  2009-11-21 10:31 ` Américo Wang
  2009-11-23 11:53 ` [tip:x86/debug] x86: Suppress " tip-bot for Jan Beulich
  2 siblings, 0 replies; 5+ messages in thread
From: Américo Wang @ 2009-11-21 10:17 UTC (permalink / raw)
  To: Jan Beulich; +Cc: mingo, tglx, hpa, linux-kernel

On Fri, Nov 20, 2009 at 02:00:14PM +0000, Jan Beulich wrote:
>init_task doesn't get its stack end location set to STACK_END_MAGIC,
>and hence the message is confusing rather than helpful in this case.
>
>Signed-off-by: Jan Beulich <jbeulich@novell.com>
>

Yeah, this is a good catch. STACK_END_MAGIC is written in fork(),
init is not forked.

However, isn't it better if we can do the same detection
for init too?


>---
> arch/x86/mm/fault.c |    2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>--- linux-2.6.32-rc8/arch/x86/mm/fault.c
>+++ 2.6.32-rc8-x86-init-task-stack/arch/x86/mm/fault.c
>@@ -658,7 +658,7 @@ no_context(struct pt_regs *regs, unsigne
> 	show_fault_oops(regs, error_code, address);
> 
> 	stackend = end_of_stack(tsk);
>-	if (*stackend != STACK_END_MAGIC)
>+	if (tsk != &init_task && *stackend != STACK_END_MAGIC)
> 		printk(KERN_ALERT "Thread overran stack, or stack corrupted\n");
> 
> 	tsk->thread.cr2		= address;
>
>
>
>--
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/

-- 
Live like a child, think like the god.
 

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

* Re: [PATCH] x86: suppress stack overrun message for init_task
  2009-11-20 14:00 [PATCH] x86: suppress stack overrun message for init_task Jan Beulich
  2009-11-21 10:17 ` Américo Wang
@ 2009-11-21 10:31 ` Américo Wang
  2009-11-23  8:41   ` Jan Beulich
  2009-11-23 11:53 ` [tip:x86/debug] x86: Suppress " tip-bot for Jan Beulich
  2 siblings, 1 reply; 5+ messages in thread
From: Américo Wang @ 2009-11-21 10:31 UTC (permalink / raw)
  To: Jan Beulich; +Cc: mingo, tglx, hpa, linux-kernel

On Fri, Nov 20, 2009 at 02:00:14PM +0000, Jan Beulich wrote:
>init_task doesn't get its stack end location set to STACK_END_MAGIC,
>and hence the message is confusing rather than helpful in this case.
>
>Signed-off-by: Jan Beulich <jbeulich@novell.com>
>

How about the patch below? It is totally untested. ;)

-------------->

init process should also write STACK_END_MAGIC to the
end of its stack.

Signed-off-by: WANG Cong <xiyou.wangcong@gmail.com>

----
diff --git a/init/main.c b/init/main.c
index 5988deb..5a8f1b9 100644
--- a/init/main.c
+++ b/init/main.c
@@ -69,6 +69,7 @@
 #include <linux/kmemtrace.h>
 #include <linux/sfi.h>
 #include <linux/shmem_fs.h>
+#include <linux/magic.h>
 #include <trace/boot.h>
 
 #include <asm/io.h>
@@ -798,7 +799,9 @@ static void __init do_pre_smp_initcalls(void)
 
 static void run_init_process(char *init_filename)
 {
+	unsigned long *stack_end = end_of_stack(&init_task);
 	argv_init[0] = init_filename;
+	*stack_end = STACK_END_MAGIC;
 	kernel_execve(init_filename, argv_init, envp_init);
 }
 

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

* Re: [PATCH] x86: suppress stack overrun message for init_task
  2009-11-21 10:31 ` Américo Wang
@ 2009-11-23  8:41   ` Jan Beulich
  0 siblings, 0 replies; 5+ messages in thread
From: Jan Beulich @ 2009-11-23  8:41 UTC (permalink / raw)
  To: AméricoWang; +Cc: mingo, tglx, linux-kernel, hpa

>>> AméricoWang <xiyou.wangcong@gmail.com> 21.11.09 11:31 >>>
>On Fri, Nov 20, 2009 at 02:00:14PM +0000, Jan Beulich wrote:
>>init_task doesn't get its stack end location set to STACK_END_MAGIC,
>>and hence the message is confusing rather than helpful in this case.
>>
>>Signed-off-by: Jan Beulich <jbeulich@novell.com>
>>
>
>How about the patch below? It is totally untested. ;)
>
>-------------->
>
>init process should also write STACK_END_MAGIC to the
>end of its stack.

This seems way too late to me - in order to avoid any false reports, it
would really need to be part of INIT_TASK() I believe, but I didn't find
a way to make it so.

Jan

>Signed-off-by: WANG Cong <xiyou.wangcong@gmail.com>
>
>----
>diff --git a/init/main.c b/init/main.c
>index 5988deb..5a8f1b9 100644
>--- a/init/main.c
>+++ b/init/main.c
>@@ -69,6 +69,7 @@
> #include <linux/kmemtrace.h>
> #include <linux/sfi.h>
> #include <linux/shmem_fs.h>
>+#include <linux/magic.h>
> #include <trace/boot.h>
> 
> #include <asm/io.h>
>@@ -798,7 +799,9 @@ static void __init do_pre_smp_initcalls(void)
> 
> static void run_init_process(char *init_filename)
> {
>+	unsigned long *stack_end = end_of_stack(&init_task);
> 	argv_init[0] = init_filename;
>+	*stack_end = STACK_END_MAGIC;
> 	kernel_execve(init_filename, argv_init, envp_init);
> }
 

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

* [tip:x86/debug] x86: Suppress stack overrun message for init_task
  2009-11-20 14:00 [PATCH] x86: suppress stack overrun message for init_task Jan Beulich
  2009-11-21 10:17 ` Américo Wang
  2009-11-21 10:31 ` Américo Wang
@ 2009-11-23 11:53 ` tip-bot for Jan Beulich
  2 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Jan Beulich @ 2009-11-23 11:53 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, jbeulich, JBeulich, tglx, mingo

Commit-ID:  0e7810be30f66e9f430c4ce2cd3b14634211690f
Gitweb:     http://git.kernel.org/tip/0e7810be30f66e9f430c4ce2cd3b14634211690f
Author:     Jan Beulich <JBeulich@novell.com>
AuthorDate: Fri, 20 Nov 2009 14:00:14 +0000
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 23 Nov 2009 11:45:34 +0100

x86: Suppress stack overrun message for init_task

init_task doesn't get its stack end location set to
STACK_END_MAGIC, and hence the message is confusing
rather than helpful in this case.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
LKML-Reference: <4B06AEFE02000078000211F4@vpn.id2.novell.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 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 f4cee90..071eee6 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -658,7 +658,7 @@ no_context(struct pt_regs *regs, unsigned long error_code,
 	show_fault_oops(regs, error_code, address);
 
 	stackend = end_of_stack(tsk);
-	if (*stackend != STACK_END_MAGIC)
+	if (tsk != &init_task && *stackend != STACK_END_MAGIC)
 		printk(KERN_ALERT "Thread overran stack, or stack corrupted\n");
 
 	tsk->thread.cr2		= address;

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

end of thread, other threads:[~2009-11-23 11:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-20 14:00 [PATCH] x86: suppress stack overrun message for init_task Jan Beulich
2009-11-21 10:17 ` Américo Wang
2009-11-21 10:31 ` Américo Wang
2009-11-23  8:41   ` Jan Beulich
2009-11-23 11:53 ` [tip:x86/debug] x86: Suppress " tip-bot for Jan Beulich

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