forked from Minki/linux
KVM: Don't assign vcpu->cr3 if it's invalid: check first, set last
sSigned-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
parent
002c7f7c32
commit
fb76441649
@ -579,7 +579,6 @@ void set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
|
||||
}
|
||||
}
|
||||
|
||||
vcpu->cr3 = cr3;
|
||||
mutex_lock(&vcpu->kvm->lock);
|
||||
/*
|
||||
* Does the new cr3 value map to physical memory? (Note, we
|
||||
@ -592,8 +591,10 @@ void set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
|
||||
*/
|
||||
if (unlikely(!gfn_to_memslot(vcpu->kvm, cr3 >> PAGE_SHIFT)))
|
||||
inject_gp(vcpu);
|
||||
else
|
||||
else {
|
||||
vcpu->cr3 = cr3;
|
||||
vcpu->mmu.new_cr3(vcpu);
|
||||
}
|
||||
mutex_unlock(&vcpu->kvm->lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(set_cr3);
|
||||
|
Loading…
Reference in New Issue
Block a user