From: Jason Gunthorpe Date: Thu, 11 May 2023 04:42:03 +0000 (-0300) Subject: iommu: Use __iommu_group_set_domain() in iommu_change_dev_def_domain() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4c8ad9da05662141928fe4ed001d3775fd95221c;p=linux.git iommu: Use __iommu_group_set_domain() in iommu_change_dev_def_domain() This is missing re-attach error handling if the attach fails, use the common code. The ugly "group->domain = prev_domain" will be cleaned in a later patch. Reviewed-by: Lu Baolu Reviewed-by: Kevin Tian Tested-by: Heiko Stuebner Tested-by: Niklas Schnelle Signed-off-by: Jason Gunthorpe Link: https://lore.kernel.org/r/5-v5-1b99ae392328+44574-iommu_err_unwind_jgg@nvidia.com Signed-off-by: Joerg Roedel --- diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index f31ba66ccb2f4..e0bfb114d08da 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2946,11 +2946,12 @@ static int iommu_change_dev_def_domain(struct iommu_group *group, if (ret) goto restore_old_domain; - ret = iommu_group_create_direct_mappings(group); + group->domain = prev_dom; + ret = iommu_create_device_direct_mappings(group, dev); if (ret) goto free_new_domain; - ret = __iommu_attach_group(group->default_domain, group); + ret = __iommu_group_set_domain(group, group->default_domain); if (ret) goto free_new_domain; @@ -2962,7 +2963,6 @@ free_new_domain: iommu_domain_free(group->default_domain); restore_old_domain: group->default_domain = prev_dom; - group->domain = prev_dom; return ret; }