]> git.baikalelectronics.ru Git - kernel.git/commit
arm/arm64: KVM: Enforce unconditional flush to PoC when mapping to stage-2
authorMarc Zyngier <marc.zyngier@arm.com>
Wed, 25 Jan 2017 12:29:59 +0000 (12:29 +0000)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 30 Jan 2017 13:47:37 +0000 (13:47 +0000)
commit9082475952ebbea19d6b3c83cb52200bda2fc8e7
tree19f178720ef8382deb6247a6b4c5c388fe479799
parenta7ed91ec8b1b91469487a520266b4efd068760f4
arm/arm64: KVM: Enforce unconditional flush to PoC when mapping to stage-2

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: 3a10a34f4dc2 ("arm64: KVM: force cache clean on page fault when caches are off")
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm/include/asm/kvm_mmu.h
arch/arm64/include/asm/kvm_mmu.h