summaryrefslogtreecommitdiff
path: root/sys/net/pipex.c
diff options
context:
space:
mode:
authorMartin Pieuchot <mpi@cvs.openbsd.org>2015-06-05 10:15:55 +0000
committerMartin Pieuchot <mpi@cvs.openbsd.org>2015-06-05 10:15:55 +0000
commitb2cf55df6c6962919134ea8d4bad219abe44a286 (patch)
tree8376aad18c8677f3dd8b28689b1181a238294db7 /sys/net/pipex.c
parent1b85c2dbb3fc49875a6342b9547af7cb99534f13 (diff)
Finally protect VP lookups to guarantee that a pted won't be freed or
reused by a CPU while another CPU is manipulating it. This races occurs because the virtual spill handlers are run without taking the KERNEL_LOCK for obvious reasons. So use a per-pmap mutex that CPUs must hold when modifying a pted in order to guarantee the atomicity of operations *and* the coherence between pmap VPs tree and what's in the HASH. Thanks to dlg@ for assisting me debugging this. This change ends your PowerPC pmap SMP show of the week. GENERIC.MP on macppc should now be stable enough to build ports without corrupting its own memory. ok kettenis@, deraadt@, dlg@
Diffstat (limited to 'sys/net/pipex.c')
0 files changed, 0 insertions, 0 deletions