All of lore.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 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.