diff options
author | Philip Guenther <guenther@cvs.openbsd.org> | 2022-02-01 08:38:54 +0000 |
---|---|---|
committer | Philip Guenther <guenther@cvs.openbsd.org> | 2022-02-01 08:38:54 +0000 |
commit | a2b7b6f4df77e9888bdec5f388a1612903cd1f7f (patch) | |
tree | 0662e300f3dd89939cf041fc50f9af2374a262ba /sys/uvm/uvm_aobj.c | |
parent | 74388c3abd3de66838438f9e0bc1271ec30c0734 (diff) |
Attempt to guarantee that on copy-on-write faulting, the new copy
can't be written to while any thread can see the original version
of the page via a not-yet-flushed stale TLB entry: pmaps can indicate
they do this correctly by defining __HAVE_PMAP_MPSAFE_ENTER_COW;
uvm will force the initial CoW fault to be read-only otherwise.
Set that on amd64 and fix the problem case in pmap_enter() by putting
a read-only mapping in place, shooting the TLB entry, then fixing
it to the final read-write entry so this thread can continue without
re-faulting.
reported by jsing@ from https://github.com/golang/go/issues/34988
assisted by discussion in https://reviews.freebsd.org/D14347
tweaks from jsing@ and kettenis@
ok jsing@ mpi@ kettenis@
Diffstat (limited to 'sys/uvm/uvm_aobj.c')
0 files changed, 0 insertions, 0 deletions