]> xenbits.xensource.com Git - people/iwj/xen.git/commitdiff
IOMMU: always call teardown callback
authorOleksandr Tyshchenko <olekstysh@gmail.com>
Wed, 15 Feb 2017 12:20:48 +0000 (12:20 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 15 Feb 2017 12:20:48 +0000 (12:20 +0000)
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>
xen/drivers/passthrough/iommu.c

index d793f5de1aa033cc568d9171bb409a1cdb927fde..5e81813942687d82e367e53913263fb029315807 100644 (file)
@@ -244,8 +244,7 @@ void iommu_domain_destroy(struct domain *d)
     if ( !iommu_enabled || !dom_iommu(d)->platform_ops )
         return;
 
-    if ( need_iommu(d) )
-        iommu_teardown(d);
+    iommu_teardown(d);
 
     arch_iommu_domain_destroy(d);
 }