]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
powerpc/pseries: Cleanup error handling in iommu_pseries_alloc_group()
authorMarkus Elfring <elfring@users.sourceforge.net>
Wed, 18 Oct 2017 18:48:52 +0000 (20:48 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 22 Oct 2017 10:16:36 +0000 (12:16 +0200)
Although kfree(NULL) is legal, it's a bit lazy to rely on that to
implement the error handling. So do it the normal Linux way using
labels for each failure path.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
[mpe: Squash a few patches and rewrite change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/pseries/iommu.c

index 7c181467d0ad9b14785291a8aa11c5d9b6284587..69921f72e2dad38ff9e9ad9ec6ebe8a2d93c8071 100644 (file)
 
 static struct iommu_table_group *iommu_pseries_alloc_group(int node)
 {
-       struct iommu_table_group *table_group = NULL;
-       struct iommu_table *tbl = NULL;
-       struct iommu_table_group_link *tgl = NULL;
+       struct iommu_table_group *table_group;
+       struct iommu_table *tbl;
+       struct iommu_table_group_link *tgl;
 
        table_group = kzalloc_node(sizeof(struct iommu_table_group), GFP_KERNEL,
                           node);
        if (!table_group)
-               goto fail_exit;
+               return NULL;
 
        tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL, node);
        if (!tbl)
-               goto fail_exit;
+               goto free_group;
 
        tgl = kzalloc_node(sizeof(struct iommu_table_group_link), GFP_KERNEL,
                        node);
        if (!tgl)
-               goto fail_exit;
+               goto free_table;
 
        INIT_LIST_HEAD_RCU(&tbl->it_group_list);
        kref_init(&tbl->it_kref);
@@ -82,11 +82,10 @@ static struct iommu_table_group *iommu_pseries_alloc_group(int node)
 
        return table_group;
 
-fail_exit:
-       kfree(tgl);
-       kfree(table_group);
+free_table:
        kfree(tbl);
-
+free_group:
+       kfree(table_group);
        return NULL;
 }