]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/mm/fault.c
Merge branches 'x86/asm', 'x86/cleanups', 'x86/cpudetect', 'x86/debug', 'x86/doc...
[linux-2.6-omap-h63xx.git] / arch / x86 / mm / fault.c
index 8f4b859a04b3ff95caabfcfce54523e3adc1c313..d3eee74f830ad71bbc2fdad868e9f3549a581d96 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/kprobes.h>
 #include <linux/uaccess.h>
 #include <linux/kdebug.h>
+#include <linux/magic.h>
 
 #include <asm/system.h>
 #include <asm/desc.h>
@@ -432,6 +433,8 @@ static noinline void no_context(struct pt_regs *regs,
                        unsigned long error_code, unsigned long address)
 {
        struct task_struct *tsk = current;
+       unsigned long *stackend;
+
 #ifdef CONFIG_X86_64
        unsigned long flags;
        int sig;
@@ -468,6 +471,10 @@ static noinline void no_context(struct pt_regs *regs,
 
        show_fault_oops(regs, error_code, address);
 
+       stackend = end_of_stack(tsk);
+       if (*stackend != STACK_END_MAGIC)
+               printk(KERN_ALERT "Thread overran stack, or stack corrupted\n");
+
        tsk->thread.cr2 = address;
        tsk->thread.trap_no = 14;
        tsk->thread.error_code = error_code;