aboutsummaryrefslogtreecommitdiff
path: root/sys/vm
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2013-06-18 07:02:35 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2013-06-18 07:02:35 +0000
commit5b3e02570aad765ee54aa9ba564aa97f52101227 (patch)
tree128a935a2ea1cc348d2df9fe239a666ee16d9f5d /sys/vm
parent51091a07630097929e461d81930d3d01a2f3c3d4 (diff)
Notes
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_map.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index a9ae8030dde9..1fee839b9895 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -3807,6 +3807,12 @@ RetryLookup:;
vm_map_unlock_read(map);
return (KERN_PROTECTION_FAILURE);
}
+ if ((fault_typea & VM_PROT_COPY) != 0 &&
+ (entry->max_protection & VM_PROT_WRITE) == 0 &&
+ (entry->eflags & MAP_ENTRY_COW) == 0) {
+ vm_map_unlock_read(map);
+ return (KERN_PROTECTION_FAILURE);
+ }
/*
* If this page is not pageable, we have to get it for all possible