sh-pfc: Use devm_kzalloc()
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Sat, 15 Dec 2012 22:50:48 +0000 (23:50 +0100)
committerSimon Horman <horms+renesas@verge.net.au>
Fri, 25 Jan 2013 00:24:21 +0000 (09:24 +0900)
Replace probe-time kmalloc()/kzalloc() calls with devm_kzalloc() and get
rid of the corresponding kfree() calls.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
drivers/sh/pfc/core.c
drivers/sh/pfc/gpio.c
drivers/sh/pfc/pinctrl.c

index 6d162e694e68b570c1758ce63ec999053b5c399d..54919026ac12a6d4dab9409373f01d6e0c0a4b76 100644 (file)
@@ -33,9 +33,6 @@ static void pfc_iounmap(struct sh_pfc *pfc)
        for (k = 0; k < pfc->pdata->num_resources; k++)
                if (pfc->window[k].virt)
                        iounmap(pfc->window[k].virt);
-
-       kfree(pfc->window);
-       pfc->window = NULL;
 }
 
 static int pfc_ioremap(struct sh_pfc *pfc)
@@ -46,10 +43,10 @@ static int pfc_ioremap(struct sh_pfc *pfc)
        if (!pfc->pdata->num_resources)
                return 0;
 
-       pfc->window = kzalloc(pfc->pdata->num_resources * sizeof(*pfc->window),
-                             GFP_NOWAIT);
+       pfc->window = devm_kzalloc(pfc->dev, pfc->pdata->num_resources *
+                                  sizeof(*pfc->window), GFP_NOWAIT);
        if (!pfc->window)
-               goto err1;
+               return -ENOMEM;
 
        for (k = 0; k < pfc->pdata->num_resources; k++) {
                res = pfc->pdata->resource + k;
@@ -58,16 +55,13 @@ static int pfc_ioremap(struct sh_pfc *pfc)
                pfc->window[k].size = resource_size(res);
                pfc->window[k].virt = ioremap_nocache(res->start,
                                                         resource_size(res));
-               if (!pfc->window[k].virt)
-                       goto err2;
+               if (!pfc->window[k].virt) {
+                       pfc_iounmap(pfc);
+                       return -ENOMEM;
+               }
        }
 
        return 0;
-
-err2:
-       pfc_iounmap(pfc);
-err1:
-       return -1;
 }
 
 static void __iomem *pfc_phys_to_virt(struct sh_pfc *pfc,
index a32ea8083b9178271c46a3e4b0128c5f2175e8a0..37493e5fe2eeb10ed68f2369568327d58d7ea05f 100644 (file)
@@ -11,6 +11,7 @@
 
 #define pr_fmt(fmt) KBUILD_MODNAME " gpio: " fmt
 
+#include <linux/device.h>
 #include <linux/init.h>
 #include <linux/gpio.h>
 #include <linux/slab.h>
@@ -143,7 +144,7 @@ int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
        struct sh_pfc_chip *chip;
        int ret;
 
-       chip = kzalloc(sizeof(struct sh_pfc_chip), GFP_KERNEL);
+       chip = devm_kzalloc(pfc->dev, sizeof(*chip), GFP_KERNEL);
        if (unlikely(!chip))
                return -ENOMEM;
 
@@ -152,10 +153,8 @@ int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
        sh_pfc_gpio_setup(chip);
 
        ret = gpiochip_add(&chip->gpio_chip);
-       if (unlikely(ret < 0)) {
-               kfree(chip);
+       if (unlikely(ret < 0))
                return ret;
-       }
 
        pfc->gpio = chip;
 
@@ -175,7 +174,6 @@ int sh_pfc_unregister_gpiochip(struct sh_pfc *pfc)
        if (unlikely(ret < 0))
                return ret;
 
-       kfree(chip);
        pfc->gpio = NULL;
        return 0;
 }
index 2fc873137ce82328a44840c2c8e371f3a80bcbe5..b3dbefd5658b6b66bf44ada2fdff7f344418cdc4 100644 (file)
@@ -11,6 +11,7 @@
 #define DRV_NAME "sh-pfc"
 #define pr_fmt(fmt) KBUILD_MODNAME " pinctrl: " fmt
 
+#include <linux/device.h>
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/sh_pfc.h>
@@ -357,8 +358,8 @@ static int sh_pfc_map_gpios(struct sh_pfc *pfc, struct sh_pfc_pinctrl *pmx)
 
        pmx->nr_pads = pfc->pdata->last_gpio - pfc->pdata->first_gpio + 1;
 
-       pmx->pads = kmalloc(sizeof(struct pinctrl_pin_desc) * pmx->nr_pads,
-                           GFP_KERNEL);
+       pmx->pads = devm_kzalloc(pfc->dev, sizeof(*pmx->pads) * pmx->nr_pads,
+                                GFP_KERNEL);
        if (unlikely(!pmx->pads)) {
                pmx->nr_pads = 0;
                return -ENOMEM;
@@ -399,8 +400,8 @@ static int sh_pfc_map_functions(struct sh_pfc *pfc, struct sh_pfc_pinctrl *pmx)
        unsigned long flags;
        int i, fn;
 
-       pmx->functions = kzalloc(pmx->nr_functions * sizeof(void *),
-                                GFP_KERNEL);
+       pmx->functions = devm_kzalloc(pfc->dev, pmx->nr_functions *
+                                     sizeof(*pmx->functions), GFP_KERNEL);
        if (unlikely(!pmx->functions))
                return -ENOMEM;
 
@@ -423,7 +424,7 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc)
        struct sh_pfc_pinctrl *pmx;
        int ret;
 
-       pmx = kzalloc(sizeof(struct sh_pfc_pinctrl), GFP_KERNEL);
+       pmx = devm_kzalloc(pfc->dev, sizeof(*pmx), GFP_KERNEL);
        if (unlikely(!pmx))
                return -ENOMEM;
 
@@ -438,13 +439,11 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc)
 
        ret = sh_pfc_map_functions(pfc, pmx);
        if (unlikely(ret != 0))
-               goto free_pads;
+               return ret;
 
        pmx->pctl = pinctrl_register(&sh_pfc_pinctrl_desc, pfc->dev, pmx);
-       if (IS_ERR(pmx->pctl)) {
-               ret = PTR_ERR(pmx->pctl);
-               goto free_functions;
-       }
+       if (IS_ERR(pmx->pctl))
+               return PTR_ERR(pmx->pctl);
 
        sh_pfc_gpio_range.npins = pfc->pdata->last_gpio
                                - pfc->pdata->first_gpio + 1;
@@ -454,14 +453,6 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc)
        pinctrl_add_gpio_range(pmx->pctl, &sh_pfc_gpio_range);
 
        return 0;
-
-free_functions:
-       kfree(pmx->functions);
-free_pads:
-       kfree(pmx->pads);
-       kfree(pmx);
-
-       return ret;
 }
 
 int sh_pfc_unregister_pinctrl(struct sh_pfc *pfc)
@@ -470,10 +461,6 @@ int sh_pfc_unregister_pinctrl(struct sh_pfc *pfc)
 
        pinctrl_unregister(pmx->pctl);
 
-       kfree(pmx->functions);
-       kfree(pmx->pads);
-       kfree(pmx);
-
        pfc->pinctrl = NULL;
        return 0;
 }