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>