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.
This commit is contained in:
parent
4af3a7a23f
commit
f206d3931a
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user