aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_map.c
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2009-02-08 19:41:08 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2009-02-08 19:41:08 +0000
commit9f6acfd1a8e09272cf73b5d14b2dfaf228160d40 (patch)
tree1c53b86e9a174d82caebe7aef370d8c1dba928a5 /sys/vm/vm_map.c
parent0d0be82a5d6181670d795cce8189377bc6060a9d (diff)
downloadsrc-9f6acfd1a8e09272cf73b5d14b2dfaf228160d40.tar.gz
src-9f6acfd1a8e09272cf73b5d14b2dfaf228160d40.zip
Do not leak the MAP_ENTRY_IN_TRANSITION flag when copying map entry
on fork. Otherwise, copied entry cannot be removed in the child map. Reviewed by: tegge MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=188320
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r--sys/vm/vm_map.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 18ba48958f2e..e5c601c2ec4c 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2738,7 +2738,8 @@ vmspace_fork(struct vmspace *vm1)
*/
new_entry = vm_map_entry_create(new_map);
*new_entry = *old_entry;
- new_entry->eflags &= ~MAP_ENTRY_USER_WIRED;
+ new_entry->eflags &= ~(MAP_ENTRY_USER_WIRED |
+ MAP_ENTRY_IN_TRANSITION);
new_entry->wired_count = 0;
/*
@@ -2764,7 +2765,8 @@ vmspace_fork(struct vmspace *vm1)
*/
new_entry = vm_map_entry_create(new_map);
*new_entry = *old_entry;
- new_entry->eflags &= ~MAP_ENTRY_USER_WIRED;
+ new_entry->eflags &= ~(MAP_ENTRY_USER_WIRED |
+ MAP_ENTRY_IN_TRANSITION);
new_entry->wired_count = 0;
new_entry->object.vm_object = NULL;
vm_map_entry_link(new_map, new_map->header.prev,