summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2006-01-24 07:21:38 +0000
committeralc <alc@FreeBSD.org>2006-01-24 07:21:38 +0000
commit0ba6836a1ee728cb7194558e58365c057278e60f (patch)
treef5dc58eb70bacdc7fc7e3ce9d27fd6ce966c1634 /sys/vm
parentfd7d0891dc443e141c638b19f252638e383a31ca (diff)
downloadFreeBSD-src-0ba6836a1ee728cb7194558e58365c057278e60f.zip
FreeBSD-src-0ba6836a1ee728cb7194558e58365c057278e60f.tar.gz
In vm_page_set_invalid() invalidate all of the page's mappings as soon as
any part of the page's contents is invalidated. Submitted by: tegge
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_page.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 611be84..c882364 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -1558,6 +1558,8 @@ vm_page_set_invalid(vm_page_t m, int base, int size)
VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
bits = vm_page_bits(base, size);
mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ if (m->valid == VM_PAGE_BITS_ALL && bits != 0)
+ pmap_remove_all(m);
m->valid &= ~bits;
m->dirty &= ~bits;
m->object->generation++;
OpenPOWER on IntegriCloud