On 09/19/2018 10:26 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 <[email protected]> > > --- > v3: > - Remove goto and return directly. > > v2: > - Remove free() function. > --- > drivers/gpio/dwapb_gpio.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpio/dwapb_gpio.c b/drivers/gpio/dwapb_gpio.c > index 0f6574d..68836a7 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)); > + plat = devm_kcalloc(dev, 1, sizeof(*plat), GFP_KERNEL); > if (!plat) > return -ENOMEM; > > @@ -181,23 +180,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);
btw. on DW GPIO with multiple banks, if this bind fails for any bank but the first, the driver won't clean up properly ;-) > if (ret) > - goto err; > + return ret; > > dev_set_of_offset(subdev, node); > bank++; > } > > return 0; > - > -err: > - free(plat); > - return ret; > } > > static int gpio_dwapb_remove(struct udevice *dev) > Applied, thanks -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

