Proof of concept code I developed that we briefly deployed, but has
authorMarc Fiuczynski <mef@cs.princeton.edu>
Thu, 28 Jun 2007 23:35:03 +0000 (23:35 +0000)
committerMarc Fiuczynski <mef@cs.princeton.edu>
Thu, 28 Jun 2007 23:35:03 +0000 (23:35 +0000)
not been used in at least two years.  There are probably other (better)
solutions out there for the same support.

arch/i386/kernel/dstack.S [deleted file]
arch/i386/kernel/dstackdump.c [deleted file]
arch/i386/kernel/stackoverflow.c [deleted file]

diff --git a/arch/i386/kernel/dstack.S b/arch/i386/kernel/dstack.S
deleted file mode 100644 (file)
index cef6799..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *  linux/arch/i386/dstack.S
- *
- *  Copyright (C) 2005 Marc E. Fiuczynski
- */
-
-/*
- * dstack.s contains the system specific support for stack overflows
- * and discontiguous stack support.
- */
-
-#include <linux/config.h>
-#include <linux/linkage.h>     
-#include <asm/thread_info.h>   
-#include <asm/errno.h>
-#include <asm/segment.h>
-#include <asm/smp.h>
-#include <asm/page.h>
-
-.data
-.globl stack_overflowed
-stack_overflowed:
-       .long 0
-.text
-
-ENTRY(mcount)
-#warning stack check enabled
-       push %eax
-       movl $(THREAD_SIZE - 1),%eax
-       andl %esp,%eax
-       cmpl $STACK_WARN,%eax
-       jle 1f
-2:
-       popl %eax
-       ret
-1:
-       /* prevent infinite recursion from call to mcount from the
-        * stack_overflow function.  Need to revisit this code for
-        * SMP based systems.
-        */
-       lock; btsl $0,stack_overflowed
-       jc 2b
-
-       /* prepare to jmp to stack_overflow directly, as if it were 
-        * called directly by the caller of mcount.  
-        */
-       pushl %ebp
-       pushl %ebx
-       pushl %esi
-       pushl %edi
-       
-       call stack_overflow
-       /* Note that stack_overflow() will clear the stack_overflowed
-        * variable.
-        */
-
-       popl %edi
-       popl %esi
-       popl %ebx
-       popl %ebp
-       
-       popl %eax       
-       ret
diff --git a/arch/i386/kernel/dstackdump.c b/arch/i386/kernel/dstackdump.c
deleted file mode 100644 (file)
index 9aad728..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  linux/arch/i386/kernel/stackoverflow.c
- *
- *  Copyright (C) 2005  Marc E. Fiuczynski
- *
- */
-
-/*
- * This file handles the architecture-dependent parts of stack overflow handling...
- */
-
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/thread_info.h>
-#include <asm/processor.h>
-
-void dstackdump(void)
-{
-        unsigned long esp = current_stack_pointer();
-       int panicing = ((esp&(THREAD_SIZE-1)) <= STACK_PANIC);
-
-       oops_in_progress = 1;
-       printk( "esp: 0x%lx masked: 0x%lx STACK_PANIC:0x%lx %d %d\n",
-               esp, (esp&(THREAD_SIZE-1)), STACK_PANIC, 
-               (((esp&(THREAD_SIZE-1)) <= STACK_PANIC)), panicing);
-
-       show_trace(current,(void*)esp);
-
-       if (panicing)
-         panic("stack overflow\n");
-
-       oops_in_progress = 0;
-
-       /* Just let it happen once per task, as otherwise it goes nuts
-        * in printing stack traces.  This means that I need to dump
-        * the stack_overflowed boolean into the task or thread_info
-        * structure.  For now just turn it off all together.
-        */
-
-       /* stack_overflowed = 0; */
-}
diff --git a/arch/i386/kernel/stackoverflow.c b/arch/i386/kernel/stackoverflow.c
deleted file mode 100644 (file)
index f9b9f6f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  linux/arch/i386/kernel/stackoverflow.c
- *
- *  Copyright (C) 2005  Marc E. Fiuczynski
- *
- */
-
-/*
- * This file handles the architecture-dependent parts of stack overflow handling...
- */
-
-#include <linux/kernel.h>
-#include <linux/thread_info.h>
-#include <linux/sched.h>
-#include <asm/processor.h>
-
-void stack_overflow(void)
-{
-        unsigned long esp = current_stack_pointer();
-       int panicing = ((esp&(THREAD_SIZE-1)) <= STACK_PANIC);
-
-       oops_in_progress = 1;
-       printk( "esp: 0x%lx masked: 0x%lx STACK_PANIC:0x%lx %d %d\n",
-               esp, (esp&(THREAD_SIZE-1)), STACK_PANIC, 
-               (((esp&(THREAD_SIZE-1)) <= STACK_PANIC)), panicing);
-       show_trace(current,(void*)esp);
-
-       if (panicing)
-         panic("stack overflow\n");
-
-       oops_in_progress = 0;
-
-       /* Just let it happen once per task, as otherwise it goes nuts
-        * in printing stack traces.  This means that I need to dump
-        * the stack_overflowed boolean into the task or thread_info
-        * structure.  For now just turn it off all together.
-        */
-
-       /* stack_overflowed = 0; */
-}