On Thu, Feb 16, 2012 at 12:05 PM, Grant Likely <grant.likely@xxxxxxxxxxxx> wrote: > On Thu, Feb 16, 2012 at 11:11:52AM +0530, DebBarma, Tarun Kanti wrote: >> Hi Benoit, >> >> On Wed, Feb 15, 2012 at 9:34 PM, Benoit Cousson <b-cousson@xxxxxx> wrote: >> > Replace the regular kzalloc and ioremap with the devm_ equivalent >> > to simplify error handling. >> > >> > Add the missing devm_request_mem_region to reserve the region used >> > by the driver. >> > >> > Signed-off-by: Benoit Cousson <b-cousson@xxxxxx> >> > Cc: Tarun Kanti DebBarma <tarun.kanti@xxxxxx> >> > --- >> > drivers/gpio/gpio-omap.c | 35 +++++++++++++++-------------------- >> > 1 files changed, 15 insertions(+), 20 deletions(-) >> > >> > diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c >> > index a0c3e03..c3a9dc8 100644 >> > --- a/drivers/gpio/gpio-omap.c >> > +++ b/drivers/gpio/gpio-omap.c >> > @@ -19,7 +19,7 @@ >> > #include <linux/err.h> >> > #include <linux/clk.h> >> > #include <linux/io.h> >> > -#include <linux/slab.h> >> > +#include <linux/device.h> >> > #include <linux/pm_runtime.h> >> > #include <linux/pm.h> >> > >> > @@ -1052,23 +1052,19 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) >> > struct gpio_bank *bank; >> > int ret = 0; >> > >> > - if (!dev->platform_data) { >> > - ret = -EINVAL; >> > - goto err_exit; >> > - } >> > + if (!dev->platform_data) >> > + return -EINVAL; >> > >> > - bank = kzalloc(sizeof(struct gpio_bank), GFP_KERNEL); >> > + bank = devm_kzalloc(&pdev->dev, sizeof(struct gpio_bank), GFP_KERNEL); >> > if (!bank) { >> > dev_err(dev, "Memory alloc failed\n"); >> > - ret = -ENOMEM; >> > - goto err_exit; >> > + return -ENOMEM; >> > } >> > >> > res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); >> > if (unlikely(!res)) { >> > dev_err(dev, "Invalid IRQ resource\n"); >> > - ret = -ENODEV; >> > - goto err_free; >> > + return -ENODEV; >> How is the memory allocated to 'bank' getting freed before return -ENODEV? > > The magic of devm_*() functions. Anything allocated by those functions is > automatically freed on either probe failure or driver removal. OK, thanks. -- Tarun > > g. > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html