diff options
author | kib <kib@FreeBSD.org> | 2009-02-08 19:41:08 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2009-02-08 19:41:08 +0000 |
commit | 7a52ad11f4d64ed7708bcd7e0b7b336d89b2eb2d (patch) | |
tree | 1c53b86e9a174d82caebe7aef370d8c1dba928a5 /sys/vm | |
parent | b798264c6d3610320d00cc64d4fa567caccd0f3d (diff) | |
download | FreeBSD-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
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/vm_map.c | 6 |
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, |