
On Fri, Sep 07, 2018 at 10:51:00AM +0200, Marek Vasut wrote:
On 09/07/2018 08:24 AM, Ley Foon Tan wrote:
Change to use managed resource function devm_kcalloc(), so it will auto free memory when driver is removed.
Signed-off-by: Ley Foon Tan ley.foon.tan@intel.com
v2:
- Remove free() function.
drivers/gpio/dwapb_gpio.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpio/dwapb_gpio.c b/drivers/gpio/dwapb_gpio.c index 0f6574d..6f9d17d 100644 --- a/drivers/gpio/dwapb_gpio.c +++ b/drivers/gpio/dwapb_gpio.c @@ -171,8 +171,7 @@ static int gpio_dwapb_bind(struct udevice *dev) if (!fdtdec_get_bool(blob, node, "gpio-controller")) continue;
plat = NULL;
plat = calloc(1, sizeof(*plat));
if (!plat) return -ENOMEM;plat = devm_kcalloc(dev, 1, sizeof(*plat), GFP_KERNEL);
@@ -196,7 +195,6 @@ static int gpio_dwapb_bind(struct udevice *dev) return 0;
err:
- free(plat); return ret;
Well, this becomes return ret, right ? ;-)
Well, this vanishes completely ;-) But there're more strange snipets, better to show patch:
diff --git a/drivers/gpio/dwapb_gpio.c b/drivers/gpio/dwapb_gpio.c index a118f58b22..7b3c5af6a7 100644 --- a/drivers/gpio/dwapb_gpio.c +++ b/drivers/gpio/dwapb_gpio.c @@ -123,8 +123,7 @@ static int gpio_dwapb_bind(struct udevice *dev) if (!fdtdec_get_bool(blob, node, "gpio-controller")) continue;
- plat = NULL; - plat = calloc(1, sizeof(*plat)); + plat = devm_kcalloc(dev, 1, sizeof(*plat), GFP_KERNEL); if (!plat) return -ENOMEM;
@@ -133,23 +132,17 @@ static int gpio_dwapb_bind(struct udevice *dev) plat->pins = fdtdec_get_int(blob, node, "snps,nr-gpios", 0); plat->name = fdt_stringlist_get(blob, node, "bank-name", 0, NULL); - if (ret) - goto err;
ret = device_bind(dev, dev->driver, plat->name, plat, -1, &subdev); if (ret) - goto err; + return ret;
dev_set_of_offset(subdev, node); bank++; }
return 0; - -err: - free(plat); - return ret; }
static const struct udevice_id gpio_dwapb_ids[] = {
}
-- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot