diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2023-02-11 21:11:38 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2023-02-11 21:11:38 +0000 |
commit | 86cfaae2e4fd256290cca1097487d71d2ef26694 (patch) | |
tree | 2a89826c81a399d827d8d94e2b45c4ecaa0174c9 /sys/uvm/uvm_map.c | |
parent | 35234cb49b91c4bef527d020d982252bbc0e759a (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.c | 3 |
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); |