mtd: docg3: Use devm_*() functions
authorJingoo Han <jg1.han@samsung.com>
Thu, 26 Dec 2013 01:40:52 +0000 (10:40 +0900)
committerBrian Norris <computersforpeace@gmail.com>
Fri, 3 Jan 2014 19:22:27 +0000 (11:22 -0800)
Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/devices/docg3.c

index 4f091c1a9981c060e3ea2cae43960ade8b4bc2f7..dd5e1018d37b39e9301c9c43e01195f4f363a66c 100644 (file)
@@ -2047,21 +2047,21 @@ static int __init docg3_probe(struct platform_device *pdev)
        ress = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!ress) {
                dev_err(dev, "No I/O memory resource defined\n");
-               goto noress;
+               return ret;
        }
-       base = ioremap(ress->start, DOC_IOSPACE_SIZE);
+       base = devm_ioremap(dev, ress->start, DOC_IOSPACE_SIZE);
 
        ret = -ENOMEM;
-       cascade = kzalloc(sizeof(*cascade) * DOC_MAX_NBFLOORS,
-                         GFP_KERNEL);
+       cascade = devm_kzalloc(dev, sizeof(*cascade) * DOC_MAX_NBFLOORS,
+                              GFP_KERNEL);
        if (!cascade)
-               goto nomem1;
+               return ret;
        cascade->base = base;
        mutex_init(&cascade->lock);
        cascade->bch = init_bch(DOC_ECC_BCH_M, DOC_ECC_BCH_T,
                             DOC_ECC_BCH_PRIMPOLY);
        if (!cascade->bch)
-               goto nomem2;
+               return ret;
 
        for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++) {
                mtd = doc_probe_device(cascade, floor, dev);
@@ -2101,11 +2101,6 @@ err_probe:
        for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++)
                if (cascade->floors[floor])
                        doc_release_device(cascade->floors[floor]);
-nomem2:
-       kfree(cascade);
-nomem1:
-       iounmap(base);
-noress:
        return ret;
 }
 
@@ -2119,7 +2114,6 @@ static int __exit docg3_release(struct platform_device *pdev)
 {
        struct docg3_cascade *cascade = platform_get_drvdata(pdev);
        struct docg3 *docg3 = cascade->floors[0]->priv;
-       void __iomem *base = cascade->base;
        int floor;
 
        doc_unregister_sysfs(pdev, cascade);
@@ -2129,8 +2123,6 @@ static int __exit docg3_release(struct platform_device *pdev)
                        doc_release_device(cascade->floors[floor]);
 
        free_bch(docg3->cascade->bch);
-       kfree(cascade);
-       iounmap(base);
        return 0;
 }