• Marc Zyngier's avatar
    arm/arm64: KVM: Enforce unconditional flush to PoC when mapping to stage-2 · 8f36ebaf
    Marc Zyngier authored
    When we fault in a page, we flush it to the PoC (Point of Coherency)
    if the faulting vcpu has its own caches off, so that it can observe
    the page we just brought it.
    
    But if the vcpu has its caches on, we skip that step. Bad things
    happen when *another* vcpu tries to access that page with its own
    caches disabled. At that point, there is no garantee that the
    data has made it to the PoC, and we access stale data.
    
    The obvious fix is to always flush to PoC when a page is faulted
    in, no matter what the state of the vcpu is.
    
    Cc: stable@vger.kernel.org
    Fixes: 2d58b733 ("arm64: KVM: force cache clean on page fault when caches are off")
    Reviewed-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    8f36ebaf
kvm_mmu.h 5.82 KB