aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2018-10-05 09:39:53 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2018-10-05 09:39:53 +0200
commitcc906f07d7d569a30bb6f0baf8f80b2968353dc9 (patch)
tree5a0098288a77c5a4482dd3d820c8d22cd443c3d8
parentkvm: nVMX: fix entry with pending interrupt if APICv is enabled (diff)
parentKVM: PPC: Book3S HV: Avoid crash from THP collapse during radix page fault (diff)
downloadlinux-dev-cc906f07d7d569a30bb6f0baf8f80b2968353dc9.tar.xz
linux-dev-cc906f07d7d569a30bb6f0baf8f80b2968353dc9.zip
Merge tag 'kvm-ppc-fixes-4.19-3' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into kvm-master
Third set of PPC KVM fixes for 4.19 One patch here, fixing a potential host crash introduced (or at least exacerbated) by a previous fix for corruption relating to radix guest page faults and THP operations.
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu_radix.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c
index 933c574e1cf7..998f8d089ac7 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_radix.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c
@@ -646,6 +646,16 @@ int kvmppc_book3s_radix_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu,
*/
local_irq_disable();
ptep = __find_linux_pte(vcpu->arch.pgdir, hva, NULL, &shift);
+ /*
+ * If the PTE disappeared temporarily due to a THP
+ * collapse, just return and let the guest try again.
+ */
+ if (!ptep) {
+ local_irq_enable();
+ if (page)
+ put_page(page);
+ return RESUME_GUEST;
+ }
pte = *ptep;
local_irq_enable();