Optimize the error handling to free the resources correctly when
failed to allocate an iommu group.

Signed-off-by: Baolin Wang <baolin.w...@linux.alibaba.com>
---
 drivers/iommu/iommu.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 03d6a26..ac91024 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -529,12 +529,18 @@ struct iommu_group *iommu_group_alloc(void)
 
        ret = iommu_group_create_file(group,
                                      &iommu_group_attr_reserved_regions);
-       if (ret)
+       if (ret) {
+               kobject_put(group->devices_kobj);
                return ERR_PTR(ret);
+       }
 
        ret = iommu_group_create_file(group, &iommu_group_attr_type);
-       if (ret)
+       if (ret) {
+               iommu_group_remove_file(group,
+                                       &iommu_group_attr_reserved_regions);
+               kobject_put(group->devices_kobj);
                return ERR_PTR(ret);
+       }
 
        pr_debug("Allocated group %d\n", group->id);
 
-- 
1.8.3.1

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to