]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
arm: KVM: Fix idmap overlap detection when the kernel is idmap'ed
authorMarc Zyngier <marc.zyngier@arm.com>
Mon, 22 Aug 2016 08:01:17 +0000 (09:01 +0100)
committerChristoffer Dall <christoffer.dall@linaro.org>
Tue, 6 Sep 2016 11:09:31 +0000 (13:09 +0200)
We're trying hard to detect when the HYP idmap overlaps with the
HYP va, as it makes the teardown of a cpu dangerous. But there is
one case where an overlap is completely safe, which is when the
whole of the kernel is idmap'ed, which is likely to happen on 32bit
when RAM is at 0x8000000 and we're using a 2G/2G VA split.

In that case, we can proceed safely.

Reported-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
arch/arm/kvm/mmu.c

index 29d0b23af2a9dec3b2199ac3851c9ae74b0731ee..a3faafe70081d901a90a5abf02186701b6e1661c 100644 (file)
@@ -1714,7 +1714,8 @@ int kvm_mmu_init(void)
                 kern_hyp_va(PAGE_OFFSET), kern_hyp_va(~0UL));
 
        if (hyp_idmap_start >= kern_hyp_va(PAGE_OFFSET) &&
-           hyp_idmap_start <  kern_hyp_va(~0UL)) {
+           hyp_idmap_start <  kern_hyp_va(~0UL) &&
+           hyp_idmap_start != (unsigned long)__hyp_idmap_text_start) {
                /*
                 * The idmap page is intersecting with the VA space,
                 * it is not safe to continue further.