svn commit: r204312 - head/sys/powerpc/powerpc

Nathan Whitehorn nwhitehorn at FreeBSD.org
Thu Feb 25 14:51:07 UTC 2010


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)


More information about the svn-src-all mailing list