From e2df5c83f183c31dae23a424697bd1ed0f913f2e Mon Sep 17 00:00:00 2001 From: Marcelo Tosatti Date: Thu, 16 Apr 2009 08:30:44 -0300 Subject: [PATCH] --- yaml --- r: 146547 b: refs/heads/master c: 59839dfff5eabca01cc4e20b45797a60a80af8cb h: refs/heads/master i: 146545: 0a29c93138abf5c2c122bc7838d9213cf2e00ba9 146543: 6efed4348b8fdcac1f5099e0b07ad1747fc70202 v: v3 --- [refs] | 2 +- trunk/arch/x86/kvm/x86.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 41b7f31da5d8..3a4792658ec3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c6b60c6921381130e5288b19f5fdf81152230b37 +refs/heads/master: 59839dfff5eabca01cc4e20b45797a60a80af8cb diff --git a/trunk/arch/x86/kvm/x86.c b/trunk/arch/x86/kvm/x86.c index ffbb2c818d78..2bad49b535c8 100644 --- a/trunk/arch/x86/kvm/x86.c +++ b/trunk/arch/x86/kvm/x86.c @@ -3993,7 +3993,13 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, vcpu->arch.cr2 = sregs->cr2; mmu_reset_needed |= vcpu->arch.cr3 != sregs->cr3; - vcpu->arch.cr3 = sregs->cr3; + + down_read(&vcpu->kvm->slots_lock); + if (gfn_to_memslot(vcpu->kvm, sregs->cr3 >> PAGE_SHIFT)) + vcpu->arch.cr3 = sregs->cr3; + else + set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests); + up_read(&vcpu->kvm->slots_lock); kvm_set_cr8(vcpu, sregs->cr8);