summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2014-01-06 08:18:13 -0500
committerJosh Boyer <jwboyer@fedoraproject.org>2014-01-06 08:19:43 -0500
commitf36281bf7dc6d125780dab76a8b7abdc8042b1a3 (patch)
tree1dc7b1162a278d352ccc76c00c8c8793b5e7b928
parent1dfaa2483560ba82435595e438b9c7f000d5fe5b (diff)
downloadkernel-f36281bf7dc6d125780dab76a8b7abdc8042b1a3.tar.gz
kernel-f36281bf7dc6d125780dab76a8b7abdc8042b1a3.tar.xz
kernel-f36281bf7dc6d125780dab76a8b7abdc8042b1a3.zip
Fix oops in KVM with invalid root_hpa (rhbz 924916)
-rw-r--r--KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch40
-rw-r--r--kernel.spec9
2 files changed, 49 insertions, 0 deletions
diff --git a/KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch b/KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch
new file mode 100644
index 000000000..a80b25638
--- /dev/null
+++ b/KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch
@@ -0,0 +1,40 @@
+Bugzilla: 924916
+Upstream-status: Queued for 3.14 in kvm tree
+
+From 989c6b34f6a9480e397b170cc62237e89bf4fdb9 Mon Sep 17 00:00:00 2001
+From: Marcelo Tosatti <mtosatti@redhat.com>
+Date: Thu, 19 Dec 2013 17:28:51 +0000
+Subject: KVM: MMU: handle invalid root_hpa at __direct_map
+
+It is possible for __direct_map to be called on invalid root_hpa
+(-1), two examples:
+
+1) try_async_pf -> can_do_async_pf
+ -> vmx_interrupt_allowed -> nested_vmx_vmexit
+2) vmx_handle_exit -> vmx_interrupt_allowed -> nested_vmx_vmexit
+
+Then to load_vmcs12_host_state and kvm_mmu_reset_context.
+
+Check for this possibility, let fault exception be regenerated.
+
+BZ: https://bugzilla.redhat.com/show_bug.cgi?id=924916
+
+Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+---
+diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
+index 40772ef..31a5702 100644
+--- a/arch/x86/kvm/mmu.c
++++ b/arch/x86/kvm/mmu.c
+@@ -2659,6 +2659,9 @@ static int __direct_map(struct kvm_vcpu *vcpu, gpa_t v, int write,
+ int emulate = 0;
+ gfn_t pseudo_gfn;
+
++ if (!VALID_PAGE(vcpu->arch.mmu.root_hpa))
++ return 0;
++
+ for_each_shadow_entry(vcpu, (u64)gfn << PAGE_SHIFT, iterator) {
+ if (iterator.level == level) {
+ mmu_set_spte(vcpu, iterator.sptep, ACC_ALL,
+--
+cgit v0.9.2
diff --git a/kernel.spec b/kernel.spec
index 9375b455e..d772fb36c 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -715,6 +715,9 @@ Patch25171: elantech-Properly-differentiate-between-clickpads-an.patch
Patch25172: xen-netback-Include-header-for-vmalloc.patch
+#rhbz 924916
+Patch25179: KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -1393,6 +1396,9 @@ ApplyPatch elantech-Properly-differentiate-between-clickpads-an.patch
ApplyPatch xen-netback-Include-header-for-vmalloc.patch
+#rhbz 924916
+ApplyPatch KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch
+
# END OF PATCH APPLICATIONS
%endif
@@ -2207,6 +2213,9 @@ fi
# ||----w |
# || ||
%changelog
+* Mon Jan 06 2014 Josh Boyer <jwboyer@fedoraproject.org>
+- Fix oops in KVM with invalid root_hpa (rhbz 924916)
+
* Sun Jan 05 2014 Josh Boyer <jwboyer@fedoraproject.org> - 3.13-0.0.rc7.git0.1
- Linux v3.13-rc7
- Fix xen-netback build failure on ARM