[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] VT-d: fix iommu_domain_destroy
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1262595996 0 # Node ID bf43d35585fb283f33df02ec9bfd4887de24cf11 # Parent b76fe58d07018a12f934aacb43a3e880323a2ede VT-d: fix iommu_domain_destroy Currently, g2m_ioport list and mapped_rmrrs always won't be released in iommu_domain_destroy, because the function returns before those code. It causes potential leak. This patch releases them, and thus avoid the potential leak. Signed-off-by: Weidong Han <Weidong.han@xxxxxxxxx> --- xen/drivers/passthrough/iommu.c | 39 +++++++++++++++------------------------ 1 files changed, 15 insertions(+), 24 deletions(-) diff -r b76fe58d0701 -r bf43d35585fb xen/drivers/passthrough/iommu.c --- a/xen/drivers/passthrough/iommu.c Mon Jan 04 09:06:02 2010 +0000 +++ b/xen/drivers/passthrough/iommu.c Mon Jan 04 09:06:36 2010 +0000 @@ -195,34 +195,25 @@ void iommu_domain_destroy(struct domain if ( !iommu_enabled || !hd->platform_ops ) return; - if ( !need_iommu(d) ) - return; - if ( need_iommu(d) ) { d->need_iommu = 0; hd->platform_ops->teardown(d); - return; - } - - if ( hd ) - { - list_for_each_safe ( ioport_list, tmp, &hd->g2m_ioport_list ) - { - ioport = list_entry(ioport_list, struct g2m_ioport, list); - list_del(&ioport->list); - xfree(ioport); - } - - list_for_each_safe ( rmrr_list, tmp, &hd->mapped_rmrrs ) - { - mrmrr = list_entry(rmrr_list, struct mapped_rmrr, list); - list_del(&mrmrr->list); - xfree(mrmrr); - } - } - - return hd->platform_ops->teardown(d); + } + + list_for_each_safe ( ioport_list, tmp, &hd->g2m_ioport_list ) + { + ioport = list_entry(ioport_list, struct g2m_ioport, list); + list_del(&ioport->list); + xfree(ioport); + } + + list_for_each_safe ( rmrr_list, tmp, &hd->mapped_rmrrs ) + { + mrmrr = list_entry(rmrr_list, struct mapped_rmrr, list); + list_del(&mrmrr->list); + xfree(mrmrr); + } } int iommu_map_page(struct domain *d, unsigned long gfn, unsigned long mfn) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |