aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/devices/docg3.c
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2013-12-25 20:40:52 -0500
committerBrian Norris <computersforpeace@gmail.com>2014-01-03 14:22:27 -0500
commit82402aeb8c81edab9249b9e330b21e88723f539e (patch)
tree95bc479fae15213f5ab75002e846dd1ca9cd8967 /drivers/mtd/devices/docg3.c
parent30b2afc8471ea06a6d18b9f6bc183dafb99de1f9 (diff)
mtd: docg3: Use devm_*() functions
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>
Diffstat (limited to 'drivers/mtd/devices/docg3.c')
-rw-r--r--drivers/mtd/devices/docg3.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/mtd/devices/docg3.c b/drivers/mtd/devices/docg3.c
index 4f091c1a9981..dd5e1018d37b 100644
--- a/drivers/mtd/devices/docg3.c
+++ b/drivers/mtd/devices/docg3.c
@@ -2047,21 +2047,21 @@ static int __init docg3_probe(struct platform_device *pdev)
2047 ress = platform_get_resource(pdev, IORESOURCE_MEM, 0); 2047 ress = platform_get_resource(pdev, IORESOURCE_MEM, 0);
2048 if (!ress) { 2048 if (!ress) {
2049 dev_err(dev, "No I/O memory resource defined\n"); 2049 dev_err(dev, "No I/O memory resource defined\n");
2050 goto noress; 2050 return ret;
2051 } 2051 }
2052 base = ioremap(ress->start, DOC_IOSPACE_SIZE); 2052 base = devm_ioremap(dev, ress->start, DOC_IOSPACE_SIZE);
2053 2053
2054 ret = -ENOMEM; 2054 ret = -ENOMEM;
2055 cascade = kzalloc(sizeof(*cascade) * DOC_MAX_NBFLOORS, 2055 cascade = devm_kzalloc(dev, sizeof(*cascade) * DOC_MAX_NBFLOORS,
2056 GFP_KERNEL); 2056 GFP_KERNEL);
2057 if (!cascade) 2057 if (!cascade)
2058 goto nomem1; 2058 return ret;
2059 cascade->base = base; 2059 cascade->base = base;
2060 mutex_init(&cascade->lock); 2060 mutex_init(&cascade->lock);
2061 cascade->bch = init_bch(DOC_ECC_BCH_M, DOC_ECC_BCH_T, 2061 cascade->bch = init_bch(DOC_ECC_BCH_M, DOC_ECC_BCH_T,
2062 DOC_ECC_BCH_PRIMPOLY); 2062 DOC_ECC_BCH_PRIMPOLY);
2063 if (!cascade->bch) 2063 if (!cascade->bch)
2064 goto nomem2; 2064 return ret;
2065 2065
2066 for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++) { 2066 for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++) {
2067 mtd = doc_probe_device(cascade, floor, dev); 2067 mtd = doc_probe_device(cascade, floor, dev);
@@ -2101,11 +2101,6 @@ err_probe:
2101 for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++) 2101 for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++)
2102 if (cascade->floors[floor]) 2102 if (cascade->floors[floor])
2103 doc_release_device(cascade->floors[floor]); 2103 doc_release_device(cascade->floors[floor]);
2104nomem2:
2105 kfree(cascade);
2106nomem1:
2107 iounmap(base);
2108noress:
2109 return ret; 2104 return ret;
2110} 2105}
2111 2106
@@ -2119,7 +2114,6 @@ static int __exit docg3_release(struct platform_device *pdev)
2119{ 2114{
2120 struct docg3_cascade *cascade = platform_get_drvdata(pdev); 2115 struct docg3_cascade *cascade = platform_get_drvdata(pdev);
2121 struct docg3 *docg3 = cascade->floors[0]->priv; 2116 struct docg3 *docg3 = cascade->floors[0]->priv;
2122 void __iomem *base = cascade->base;
2123 int floor; 2117 int floor;
2124 2118
2125 doc_unregister_sysfs(pdev, cascade); 2119 doc_unregister_sysfs(pdev, cascade);
@@ -2129,8 +2123,6 @@ static int __exit docg3_release(struct platform_device *pdev)
2129 doc_release_device(cascade->floors[floor]); 2123 doc_release_device(cascade->floors[floor]);
2130 2124
2131 free_bch(docg3->cascade->bch); 2125 free_bch(docg3->cascade->bch);
2132 kfree(cascade);
2133 iounmap(base);
2134 return 0; 2126 return 0;
2135} 2127}
2136 2128