File xsa207.patch of Package xen.4218
IOMMU: always call teardown callback
There is a possible scenario when (d)->need_iommu remains unset
during guest domain execution. For example, when no devices
were assigned to it. Taking into account that teardown callback
is not called when (d)->need_iommu is unset we might have unreleased
resourses after destroying domain.
So, always call teardown callback to roll back actions
that were performed in init callback.
This is XSA-207.
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Julien Grall <julien.grall@arm.com>
Index: xen-4.5.5-testing/xen/drivers/passthrough/iommu.c
===================================================================
--- xen-4.5.5-testing.orig/xen/drivers/passthrough/iommu.c
+++ xen-4.5.5-testing/xen/drivers/passthrough/iommu.c
@@ -194,8 +194,7 @@ void iommu_domain_destroy(struct domain
if ( !iommu_enabled || !dom_iommu(d)->platform_ops )
return;
- if ( need_iommu(d) )
- iommu_teardown(d);
+ iommu_teardown(d);
arch_iommu_domain_destroy(d);
}