Il 19/12/2013 18:28, Marcelo Tosatti ha scritto: > > 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@xxxxxxxxxx> > > > 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, > Applied to queue, thanks. Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html