Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Oct 2009 03:02:31 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r197891 - projects/ppc64/sys/powerpc/aim64
Message-ID:  <200910090302.n9932ViG041011@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Fri Oct  9 03:02:30 2009
New Revision: 197891
URL: http://svn.freebsd.org/changeset/base/197891

Log:
  Do not map the trap vectors into the kernel's address space. They are
  only used in real mode (with the exception of the reset vector, which
  does not work anyway in conjunction with 64-bit systems, even in bridge
  mode) and keeping them mapped only serves to make NULL a valid address.
  This results in silent NULL pointer deferences.
  
  Suggested by:	Patrick Kerharo

Modified:
  projects/ppc64/sys/powerpc/aim64/mmu_oea64.c

Modified: projects/ppc64/sys/powerpc/aim64/mmu_oea64.c
==============================================================================
--- projects/ppc64/sys/powerpc/aim64/mmu_oea64.c	Fri Oct  9 02:00:32 2009	(r197890)
+++ projects/ppc64/sys/powerpc/aim64/mmu_oea64.c	Fri Oct  9 03:02:30 2009	(r197891)
@@ -947,15 +947,17 @@ moea64_bridge_bootstrap(mmu_t mmup, vm_o
 	ENABLE_TRANS(msr);
 
 	/*
-	 * Map certain important things, like ourselves and the exception
-	 * vectors
+	 * Map certain important things, like ourselves.
+	 *
+	 * NOTE: We do not map the exception vector space. That code is
+	 * used only in real mode, and leaving it unmapped allows us to
+	 * catch NULL pointer deferences, instead of making NULL a valid
+	 * address.
 	 */
 
 	DISABLE_TRANS(msr);
 	for (pa = kernelstart & ~PAGE_MASK; pa < kernelend; pa += PAGE_SIZE) 
 		moea64_kenter(mmup, pa, pa);
-	for (pa = EXC_RSVD; pa < EXC_LAST; pa += PAGE_SIZE) 
-		moea64_kenter(mmup, pa, pa);
 	ENABLE_TRANS(msr);
 
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910090302.n9932ViG041011>