summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2018-02-21 11:28:05 +0000
committerkib <kib@FreeBSD.org>2018-02-21 11:28:05 +0000
commitc3179a4c90eee3a08297f783690e9817d6be5600 (patch)
treee62a681a659d57c43e4c8c47cc4d2165759ba2aa
parent2e04817ac14f516559a37206b49d511fba2a36c5 (diff)
downloadFreeBSD-src-c3179a4c90eee3a08297f783690e9817d6be5600.zip
FreeBSD-src-c3179a4c90eee3a08297f783690e9817d6be5600.tar.gz
MFC r329254:
Ensure memory consistency on COW.
-rw-r--r--sys/vm/vm_fault.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 9a1dd31..e829bd7 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -1133,6 +1133,10 @@ readrest:
*/
pmap_copy_page(fs.m, fs.first_m);
fs.first_m->valid = VM_PAGE_BITS_ALL;
+ if ((fault_flags & VM_FAULT_WIRE) == 0) {
+ prot &= ~VM_PROT_WRITE;
+ fault_type &= ~VM_PROT_WRITE;
+ }
if (wired && (fault_flags &
VM_FAULT_WIRE) == 0) {
vm_page_lock(fs.first_m);
OpenPOWER on IntegriCloud