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-head
mailing list