summaryrefslogtreecommitdiff
path: root/sys/uvm/uvm_map.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2023-02-11 21:11:38 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2023-02-11 21:11:38 +0000
commit86cfaae2e4fd256290cca1097487d71d2ef26694 (patch)
tree2a89826c81a399d827d8d94e2b45c4ecaa0174c9 /sys/uvm/uvm_map.c
parent35234cb49b91c4bef527d020d982252bbc0e759a (diff)
I forgot to copy the msyscall interlock flag to forked processes, so
only freshly executed processes were actually locked. (This happened because I didn't realize how the uvm_map's contents are copied entry by entry, and other parts are not) ok kettenis
Diffstat (limited to 'sys/uvm/uvm_map.c')
-rw-r--r--sys/uvm/uvm_map.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/uvm/uvm_map.c b/sys/uvm/uvm_map.c
index 9ee15eaab94..7ee39c71838 100644
--- a/sys/uvm/uvm_map.c
+++ b/sys/uvm/uvm_map.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_map.c,v 1.309 2023/01/31 15:18:55 deraadt Exp $ */
+/* $OpenBSD: uvm_map.c,v 1.310 2023/02/11 21:11:37 deraadt Exp $ */
/* $NetBSD: uvm_map.c,v 1.86 2000/11/27 08:40:03 chs Exp $ */
/*
@@ -3982,6 +3982,7 @@ uvmspace_fork(struct process *pr)
new_map, new_entry->start, new_entry->end);
}
}
+ new_map->flags |= old_map->flags & VM_MAP_SYSCALL_ONCE;
vm_map_unlock(old_map);
vm_map_unlock(new_map);