summaryrefslogtreecommitdiffstats
path: root/lib/libutil
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2017-03-13 23:20:12 +0000
committerkettenis <kettenis@openbsd.org>2017-03-13 23:20:12 +0000
commit51a294dfb3432429fd38a2c33fa8b5a917ba62ef (patch)
tree86660afccc02130f47c67b2dc593736914d217ae /lib/libutil
parent- no KERN_RND: from schwarze (diff)
downloadwireguard-openbsd-51a294dfb3432429fd38a2c33fa8b5a917ba62ef.tar.xz
wireguard-openbsd-51a294dfb3432429fd38a2c33fa8b5a917ba62ef.zip
When we do an ASID rollover, we unassign all ASIDs and do a complete
TLB flush to remove any cached translations. The problem is that we do this while we're still running with the page tables of the old process. Even if we don't actually reference any userland pages, the CPU can speculatively load translations into the TLB. And those might survive until we reassign the ASID of the old process to a new process. This new process will then see the wrong physical page, which inevitably leads to corruption of some sorts. Fix this issue by delaying the TLB flush until after we switch to the page tables and ASID of the new process. ok patrick@, drahn@
Diffstat (limited to 'lib/libutil')
0 files changed, 0 insertions, 0 deletions