svn commit: r258800 - head/sys/powerpc/aim

Nathan Whitehorn nwhitehorn at FreeBSD.org
Sun Dec 1 17:28:29 UTC 2013


Author: nwhitehorn
Date: Sun Dec  1 17:28:28 2013
New Revision: 258800
URL: http://svnweb.freebsd.org/changeset/base/258800

Log:
  The kernel stack guard pages are only below the stack pointer, not above.
  Prevent erroneous detection of stack overflows on legitimate faults on the
  page after this thread's stack.
  
  MFC after:	3 days

Modified:
  head/sys/powerpc/aim/trap_subr32.S
  head/sys/powerpc/aim/trap_subr64.S

Modified: head/sys/powerpc/aim/trap_subr32.S
==============================================================================
--- head/sys/powerpc/aim/trap_subr32.S	Sun Dec  1 17:00:57 2013	(r258799)
+++ head/sys/powerpc/aim/trap_subr32.S	Sun Dec  1 17:28:28 2013	(r258800)
@@ -664,11 +664,12 @@ disitrap:
 	stw	%r31,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1)
 
 #ifdef KDB
-	/* Try and detect a kernel stack overflow */
+	/* Try to detect a kernel stack overflow */
 	mfsrr1	%r31
 	mtcr	%r31
 	bt	17,realtrap		/* branch is user mode */
 	mfsprg1	%r31			/* get old SP */
+	clrrwi	%r31,%r31,11		/* Round SP down to nearest page */
 	sub.	%r30,%r31,%r30		/* SP - DAR */
 	bge	1f
 	neg	%r30,%r30		/* modulo value */

Modified: head/sys/powerpc/aim/trap_subr64.S
==============================================================================
--- head/sys/powerpc/aim/trap_subr64.S	Sun Dec  1 17:00:57 2013	(r258799)
+++ head/sys/powerpc/aim/trap_subr64.S	Sun Dec  1 17:28:28 2013	(r258800)
@@ -569,11 +569,12 @@ disitrap:
 	std	%r31,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1)
 
 #ifdef KDB
-	/* Try and detect a kernel stack overflow */
+	/* Try to detect a kernel stack overflow */
 	mfsrr1	%r31
 	mtcr	%r31
 	bt	17,realtrap		/* branch is user mode */
 	mfsprg1	%r31			/* get old SP */
+	clrrdi	%r31,%r31,11		/* Round SP down to nearest page */
 	sub.	%r30,%r31,%r30		/* SP - DAR */
 	bge	1f
 	neg	%r30,%r30		/* modulo value */


More information about the svn-src-all mailing list