* [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