diff options
Diffstat (limited to 'main/xen/xsa207.patch')
-rw-r--r-- | main/xen/xsa207.patch | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/main/xen/xsa207.patch b/main/xen/xsa207.patch new file mode 100644 index 0000000000..6fb86fc9d5 --- /dev/null +++ b/main/xen/xsa207.patch @@ -0,0 +1,31 @@ +From: Oleksandr Tyshchenko <olekstysh@gmail.com> +Subject: 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 +@@ -244,8 +244,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); + } |