summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2014-05-10 19:47:00 +0000
committeralc <alc@FreeBSD.org>2014-05-10 19:47:00 +0000
commitd283b621dc1fd91d4cda1ea15c0c8918c3ce3476 (patch)
treeacee156d40a63be4f5337a0566c227f0ccf8f341 /sys/vm
parentaa09279cea9f52c37d4c07acd51053f2de726203 (diff)
downloadFreeBSD-src-d283b621dc1fd91d4cda1ea15c0c8918c3ce3476.zip
FreeBSD-src-d283b621dc1fd91d4cda1ea15c0c8918c3ce3476.tar.gz
About 9% of the pmap_protect() calls being performed by vm_map_copy_entry()
are unnecessary. Eliminate the unnecessary calls. Reviewed by: kib MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_map.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index e8eaf17..0c95707 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -3023,7 +3023,8 @@ vm_map_copy_entry(
* If the source entry is marked needs_copy, it is already
* write-protected.
*/
- if ((src_entry->eflags & MAP_ENTRY_NEEDS_COPY) == 0) {
+ if ((src_entry->eflags & MAP_ENTRY_NEEDS_COPY) == 0 &&
+ (src_entry->protection & VM_PROT_WRITE) != 0) {
pmap_protect(src_map->pmap,
src_entry->start,
src_entry->end,
OpenPOWER on IntegriCloud