summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2009-02-08 19:41:08 +0000
committerkib <kib@FreeBSD.org>2009-02-08 19:41:08 +0000
commit7a52ad11f4d64ed7708bcd7e0b7b336d89b2eb2d (patch)
tree1c53b86e9a174d82caebe7aef370d8c1dba928a5
parentb798264c6d3610320d00cc64d4fa567caccd0f3d (diff)
downloadFreeBSD-src-7a52ad11f4d64ed7708bcd7e0b7b336d89b2eb2d.zip
FreeBSD-src-7a52ad11f4d64ed7708bcd7e0b7b336d89b2eb2d.tar.gz
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
-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 18ba489..e5c601c 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,
OpenPOWER on IntegriCloud