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)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to