diff options
author | alc <alc@FreeBSD.org> | 2014-05-10 19:47:00 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2014-05-10 19:47:00 +0000 |
commit | d283b621dc1fd91d4cda1ea15c0c8918c3ce3476 (patch) | |
tree | acee156d40a63be4f5337a0566c227f0ccf8f341 /sys/vm | |
parent | aa09279cea9f52c37d4c07acd51053f2de726203 (diff) | |
download | FreeBSD-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.c | 3 |
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, |