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