]> xenbits.xensource.com Git - xen.git/commitdiff
IOMMU: always call teardown callback
authorOleksandr Tyshchenko <olekstysh@gmail.com>
Wed, 15 Feb 2017 12:21:10 +0000 (12:21 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 15 Feb 2017 12:21:10 +0000 (12:21 +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 a4fccc5274fe747270a0d30b8bddd96dceb6bee1..5b96a4600960baf48cef4514578c168a996a59f1 100644 (file)
@@ -418,8 +418,7 @@ void iommu_domain_destroy(struct domain *d)
     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 )
     {