> > @@ -883,7 +884,7 @@ static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, 
> > struct kvm_mmu *mmu,
> >   */
> >  static int FNAME(sync_spte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page 
> > *sp, int i)
> >  {
> > -   bool host_writable;
> > +   bool host_writable, is_refcounted;
> >     gpa_t first_pte_gpa;
> >     u64 *sptep, spte;
> >     struct kvm_memory_slot *slot;
> > @@ -940,10 +941,12 @@ static int FNAME(sync_spte)(struct kvm_vcpu *vcpu, 
> > struct kvm_mmu_page *sp, int
> >     sptep = &sp->spt[i];
> >     spte = *sptep;
> >     host_writable = spte & shadow_host_writable_mask;
> > +   // TODO: is this correct?
> > +   is_refcounted = spte & SPTE_MMU_PAGE_REFCOUNTED;
> >     slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn);
> >     make_spte(vcpu, sp, slot, pte_access, gfn,
> >               spte_to_pfn(spte), spte, true, false,
> > -             host_writable, &spte);
> > +             host_writable, is_refcounted, &spte);
> 
> Could we restrict that a non-refcounted page shall not be used as shadow page?

Oh, sorry. It's not about shadow page. It's about guest page being
mapped as not refcounted. Silly me...

B.R.
Yu

Reply via email to