File 58a44771-IOMMU-always-call-teardown-callback.patch of Package xen.7317

# Commit 93e1435290867703c50acad1f54b9208df473562
# Date 2017-02-15 12:20:01 +0000
# Author Oleksandr Tyshchenko <olekstysh@gmail.com>
# Committer Andrew Cooper <andrew.cooper3@citrix.com>
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.

Signed-off-by: Oleksandr Tyshchenko <olekstysh@gmail.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Julien Grall <julien.grall@arm.com>

--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -421,8 +421,7 @@ void iommu_domain_destroy(struct domain
     if ( !iommu_enabled || !hd->platform_ops )
         return;
 
-    if ( need_iommu(d) )
-        iommu_teardown(d);
+    iommu_teardown(d);
 
     list_for_each_safe ( ioport_list, tmp, &hd->g2m_ioport_list )
     {
openSUSE Build Service is sponsored by