summaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch')
-rw-r--r--extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch b/extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch
new file mode 100644
index 00000000..9372cf05
--- /dev/null
+++ b/extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch
@@ -0,0 +1,35 @@
1From 22c5ed7018eb4157e317c8513fe2ced2c8ec5e0c Mon Sep 17 00:00:00 2001
2From: Avi Kivity <avi@redhat.com>
3Date: Tue, 28 Dec 2010 12:09:07 +0200
4Subject: [PATCH 26/65] KVM: MMU: Fix incorrect direct gfn for unpaged mode shadow
5
6We use the physical address instead of the base gfn for the four
7PAE page directories we use in unpaged mode. When the guest accesses
8an address above 1GB that is backed by a large host page, a BUG_ON()
9in kvm_mmu_set_gfn() triggers.
10
11Resolves: https://bugzilla.kernel.org/show_bug.cgi?id=21962
12Reported-and-tested-by: Nicolas Prochazka <prochazka.nicolas@gmail.com>
13KVM-Stable-Tag.
14Signed-off-by: Avi Kivity <avi@redhat.com>
15---
16 arch/x86/kvm/mmu.c | 3 ++-
17 1 files changed, 2 insertions(+), 1 deletions(-)
18
19diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
20index fb8b376..fbb04ae 100644
21--- a/arch/x86/kvm/mmu.c
22+++ b/arch/x86/kvm/mmu.c
23@@ -2394,7 +2394,8 @@ static int mmu_alloc_direct_roots(struct kvm_vcpu *vcpu)
24 ASSERT(!VALID_PAGE(root));
25 spin_lock(&vcpu->kvm->mmu_lock);
26 kvm_mmu_free_some_pages(vcpu);
27- sp = kvm_mmu_get_page(vcpu, i << 30, i << 30,
28+ sp = kvm_mmu_get_page(vcpu, i << (30 - PAGE_SHIFT),
29+ i << 30,
30 PT32_ROOT_LEVEL, 1, ACC_ALL,
31 NULL);
32 root = __pa(sp->spt);
33--
341.6.6.1
35