Merge tag 'iommu-updates-v3.11' of git://git.kernel.org/pub/scm/linux/kernel/git...
[firefly-linux-kernel-4.4.55.git] / drivers / mfd / asic3.c
index 1b15986c01e11fd664686edfaba5c2dfca65213c..9532f749412f6442f190d3ec34fff0c286b36e9d 100644 (file)
@@ -958,7 +958,8 @@ static int __init asic3_probe(struct platform_device *pdev)
        unsigned long clksel;
        int ret = 0;
 
-       asic = kzalloc(sizeof(struct asic3), GFP_KERNEL);
+       asic = devm_kzalloc(&pdev->dev,
+                           sizeof(struct asic3), GFP_KERNEL);
        if (asic == NULL) {
                printk(KERN_ERR "kzalloc failed\n");
                return -ENOMEM;
@@ -970,16 +971,14 @@ static int __init asic3_probe(struct platform_device *pdev)
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!mem) {
-               ret = -ENOMEM;
                dev_err(asic->dev, "no MEM resource\n");
-               goto out_free;
+               return -ENOMEM;
        }
 
        asic->mapping = ioremap(mem->start, resource_size(mem));
        if (!asic->mapping) {
-               ret = -ENOMEM;
                dev_err(asic->dev, "Couldn't ioremap\n");
-               goto out_free;
+               return -ENOMEM;
        }
 
        asic->irq_base = pdata->irq_base;
@@ -1033,9 +1032,6 @@ static int __init asic3_probe(struct platform_device *pdev)
  out_unmap:
        iounmap(asic->mapping);
 
- out_free:
-       kfree(asic);
-
        return ret;
 }
 
@@ -1058,8 +1054,6 @@ static int asic3_remove(struct platform_device *pdev)
 
        iounmap(asic->mapping);
 
-       kfree(asic);
-
        return 0;
 }