CVSROOT: /cvs Module name: src Changes by: kette...@cvs.openbsd.org 2017/03/13 17:20:12
Modified files: sys/arch/arm64/arm64: pmap.c Log message: 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@