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@

Reply via email to