[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] IOMMU/x86: avoid pages without GFN in page table creation/updating
Jan Beulich wrote on 2015-05-11: >>>> On 11.05.15 at 04:53, <yang.z.zhang@xxxxxxxxx> wrote: >> Jan Beulich wrote on 2015-05-07: >>> --- a/xen/drivers/passthrough/x86/iommu.c >>> +++ b/xen/drivers/passthrough/x86/iommu.c >>> @@ -59,10 +59,17 @@ int arch_iommu_populate_page_table(struc >>> if ( has_hvm_container_domain(d) || >>> (page->u.inuse.type_info & PGT_type_mask) == >>> PGT_writable_page ) >>> { >>> - BUG_ON(SHARED_M2P(mfn_to_gmfn(d, page_to_mfn(page)))); - >>> rc = hd->platform_ops->map_page( - d, >>> mfn_to_gmfn(d, page_to_mfn(page)), page_to_mfn(page), - >>> IOMMUF_readable|IOMMUF_writable); + unsigned long mfn = >>> page_to_mfn(page); + unsigned long gfn = mfn_to_gmfn(d, >>> mfn); + + if ( gfn != INVALID_MFN ) + { + >>> ASSERT(!(gfn >> DEFAULT_DOMAIN_ADDRESS_WIDTH)); + >>> BUG_ON(SHARED_M2P(gfn)); >> >> It seems ASSERT() is unnecessary. BUG_ON() is enough to cover it. > > The two check completely different things, so I don't see how the > BUG_ON() would help with out of bounds, yet also not INVALID_MFN GFNs. > Please clarify what you mean here. You are right. I misread the code as BUG_ON(!SHARED_M2P(gfn)). For Intel VT-d part: Acked-by: Yang Zhang <yang.z.zhang@xxxxxxxxx> > > Jan Best regards, Yang _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |