Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Feb 2010 14:51:06 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r204312 - head/sys/powerpc/powerpc
Message-ID:  <201002251451.o1PEp6iE042500@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Thu Feb 25 14:51:06 2010
New Revision: 204312
URL: http://svn.freebsd.org/changeset/base/204312

Log:
  Fix another bug involving /dev/mem and the OEA64 scratchpage. When
  the scratchpage is updated, the PVO's physical address is updated as well.
  This makes pmap_extract() begin returning non-zero values again, causing
  the panic partially fixed in r204297. Fix this by excluding addresses
  beyond virtual_end from consideration as KVA addresses, instead of allowing
  addresses up to VM_MAX_KERNEL_ADDRESS.

Modified:
  head/sys/powerpc/powerpc/mem.c

Modified: head/sys/powerpc/powerpc/mem.c
==============================================================================
--- head/sys/powerpc/powerpc/mem.c	Thu Feb 25 14:42:26 2010	(r204311)
+++ head/sys/powerpc/powerpc/mem.c	Thu Feb 25 14:51:06 2010	(r204312)
@@ -121,8 +121,7 @@ kmem_direct_mapped:	v = uio->uio_offset;
 		else if (dev2unit(dev) == CDEV_MINOR_KMEM) {
 			va = uio->uio_offset;
 
-			if ((va < VM_MIN_KERNEL_ADDRESS)
-			    || (va > VM_MAX_KERNEL_ADDRESS))
+			if ((va < VM_MIN_KERNEL_ADDRESS) || (va > virtual_end))
 				goto kmem_direct_mapped;
 
 			va = trunc_page(uio->uio_offset);
@@ -135,8 +134,7 @@ kmem_direct_mapped:	v = uio->uio_offset;
 			 */
 
 			for (; va < eva; va += PAGE_SIZE)
-				if (pmap_extract(kernel_pmap, va)
-				    == 0)
+				if (pmap_extract(kernel_pmap, va) == 0)
 					return (EFAULT);
 
 			prot = (uio->uio_rw == UIO_READ)



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