• M
    KVM: arm/arm64: Clean dcache to PoC when changing PTE due to CoW · 694556d5
    Marc Zyngier 提交于
    When triggering a CoW, we unmap the RO page via an MMU notifier
    (invalidate_range_start), and then populate the new PTE using another
    one (change_pte). In the meantime, we'll have copied the old page
    into the new one.
    
    The problem is that the data for the new page is sitting in the
    cache, and should the guest have an uncached mapping to that page
    (or its MMU off), following accesses will bypass the cache.
    
    In a way, this is similar to what happens on a translation fault:
    We need to clean the page to the PoC before mapping it. So let's just
    do that.
    
    This fixes a KVM unit test regression observed on a HiSilicon platform,
    and subsequently reproduced on Seattle.
    
    Fixes: a9c0e12e ("KVM: arm/arm64: Only clean the dcache on translation fault")
    Cc: stable@vger.kernel.org # v4.16+
    Reported-by: NMike Galbraith <efault@gmx.de>
    Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: NChristoffer Dall <christoffer.dall@arm.com>
    694556d5
mmu.c 57.5 KB