Message ID | 001001cefd55$aa828110$ff878330$%han@samsung.com |
---|---|
State | New, archived |
Headers | show |
On 20/12/13 08:32, Jingoo Han wrote: > Use devm_kzalloc() to make cleanup paths simpler. > > Signed-off-by: Jingoo Han<jg1.han@samsung.com> Hi, Acked-by: John Crispin <blogic@openwrt.org> Thanks for the clean up ! John
On Fri, Dec 20, 2013 at 04:32:41PM +0900, Jingoo Han wrote: > Use devm_kzalloc() to make cleanup paths simpler. > > Signed-off-by: Jingoo Han <jg1.han@samsung.com> > --- > Change since v1 > - Remove unnecessary goto labels. > > drivers/mtd/maps/lantiq-flash.c | 31 ++++++++++--------------------- > 1 file changed, 10 insertions(+), 21 deletions(-) > > diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c > index d7ac65d..45a7ac7 100644 > --- a/drivers/mtd/maps/lantiq-flash.c > +++ b/drivers/mtd/maps/lantiq-flash.c > @@ -123,24 +123,22 @@ ltq_mtd_probe(struct platform_device *pdev) > return -ENODEV; > } > > - ltq_mtd = kzalloc(sizeof(struct ltq_mtd), GFP_KERNEL); > + ltq_mtd = devm_kzalloc(&pdev->dev, sizeof(struct ltq_mtd), GFP_KERNEL); And you don't check if the allocation succeded? > platform_set_drvdata(pdev, ltq_mtd); > > ltq_mtd->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > if (!ltq_mtd->res) { > dev_err(&pdev->dev, "failed to get memory resource\n"); > - err = -ENOENT; > - goto err_out; > + return -ENOENT; > } > > - ltq_mtd->map = kzalloc(sizeof(struct map_info), GFP_KERNEL); > + ltq_mtd->map = devm_kzalloc(&pdev->dev, sizeof(struct map_info), > + GFP_KERNEL); Ditto. I think that's a far more urgent fix, than moving to devm_kzalloc.
On Saturday, December 21, 2013 12:38 AM, Ezequiel Garcia wrote: > On Fri, Dec 20, 2013 at 04:32:41PM +0900, Jingoo Han wrote: > > Use devm_kzalloc() to make cleanup paths simpler. > > > > Signed-off-by: Jingoo Han <jg1.han@samsung.com> > > --- > > Change since v1 > > - Remove unnecessary goto labels. > > > > drivers/mtd/maps/lantiq-flash.c | 31 ++++++++++--------------------- > > 1 file changed, 10 insertions(+), 21 deletions(-) > > > > diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c > > index d7ac65d..45a7ac7 100644 > > --- a/drivers/mtd/maps/lantiq-flash.c > > +++ b/drivers/mtd/maps/lantiq-flash.c > > @@ -123,24 +123,22 @@ ltq_mtd_probe(struct platform_device *pdev) > > return -ENODEV; > > } > > > > - ltq_mtd = kzalloc(sizeof(struct ltq_mtd), GFP_KERNEL); > > + ltq_mtd = devm_kzalloc(&pdev->dev, sizeof(struct ltq_mtd), GFP_KERNEL); > > And you don't check if the allocation succeded? > > > platform_set_drvdata(pdev, ltq_mtd); > > > > ltq_mtd->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > if (!ltq_mtd->res) { > > dev_err(&pdev->dev, "failed to get memory resource\n"); > > - err = -ENOENT; > > - goto err_out; > > + return -ENOENT; > > } > > > > - ltq_mtd->map = kzalloc(sizeof(struct map_info), GFP_KERNEL); > > + ltq_mtd->map = devm_kzalloc(&pdev->dev, sizeof(struct map_info), > > + GFP_KERNEL); > > Ditto. > > I think that's a far more urgent fix, than moving to devm_kzalloc. OK, I see. Although I think that checking return value can be sent as another patch, I will add this to the next v3 patch. Thank you for your comment. Best regards, Jingoo Han
diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c index d7ac65d..45a7ac7 100644 --- a/drivers/mtd/maps/lantiq-flash.c +++ b/drivers/mtd/maps/lantiq-flash.c @@ -123,24 +123,22 @@ ltq_mtd_probe(struct platform_device *pdev) return -ENODEV; } - ltq_mtd = kzalloc(sizeof(struct ltq_mtd), GFP_KERNEL); + ltq_mtd = devm_kzalloc(&pdev->dev, sizeof(struct ltq_mtd), GFP_KERNEL); platform_set_drvdata(pdev, ltq_mtd); ltq_mtd->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!ltq_mtd->res) { dev_err(&pdev->dev, "failed to get memory resource\n"); - err = -ENOENT; - goto err_out; + return -ENOENT; } - ltq_mtd->map = kzalloc(sizeof(struct map_info), GFP_KERNEL); + ltq_mtd->map = devm_kzalloc(&pdev->dev, sizeof(struct map_info), + GFP_KERNEL); ltq_mtd->map->phys = ltq_mtd->res->start; ltq_mtd->map->size = resource_size(ltq_mtd->res); ltq_mtd->map->virt = devm_ioremap_resource(&pdev->dev, ltq_mtd->res); - if (IS_ERR(ltq_mtd->map->virt)) { - err = PTR_ERR(ltq_mtd->map->virt); - goto err_out; - } + if (IS_ERR(ltq_mtd->map->virt)) + return PTR_ERR(ltq_mtd->map->virt); ltq_mtd->map->name = ltq_map_name; ltq_mtd->map->bankwidth = 2; @@ -155,8 +153,7 @@ ltq_mtd_probe(struct platform_device *pdev) if (!ltq_mtd->mtd) { dev_err(&pdev->dev, "probing failed\n"); - err = -ENXIO; - goto err_free; + return -ENXIO; } ltq_mtd->mtd->owner = THIS_MODULE; @@ -177,10 +174,6 @@ ltq_mtd_probe(struct platform_device *pdev) err_destroy: map_destroy(ltq_mtd->mtd); -err_free: - kfree(ltq_mtd->map); -err_out: - kfree(ltq_mtd); return err; } @@ -189,13 +182,9 @@ ltq_mtd_remove(struct platform_device *pdev) { struct ltq_mtd *ltq_mtd = platform_get_drvdata(pdev); - if (ltq_mtd) { - if (ltq_mtd->mtd) { - mtd_device_unregister(ltq_mtd->mtd); - map_destroy(ltq_mtd->mtd); - } - kfree(ltq_mtd->map); - kfree(ltq_mtd); + if (ltq_mtd && ltq_mtd->mtd) { + mtd_device_unregister(ltq_mtd->mtd); + map_destroy(ltq_mtd->mtd); } return 0; }
Use devm_kzalloc() to make cleanup paths simpler. Signed-off-by: Jingoo Han <jg1.han@samsung.com> --- Change since v1 - Remove unnecessary goto labels. drivers/mtd/maps/lantiq-flash.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-)