Prev: x86: Add IRQ_TIME_ACCOUNTING, finer accounting of irq time to task
Next: [PATCH] proc_dointvec, write a single value
From: Axel Lin on 25 May 2010 02:50 In current implementation, there is a memory leak if ab3100_otp_read fail. And in the case of ab3100_otp_init_debugfs fail, it does not properly remove sysfs entries. This patch properly handle above failure cases. Signed-off-by: Axel Lin <axel.lin(a)gmail.com> --- drivers/mfd/ab3100-otp.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/mfd/ab3100-otp.c b/drivers/mfd/ab3100-otp.c index 2d14655..939b876 100644 --- a/drivers/mfd/ab3100-otp.c +++ b/drivers/mfd/ab3100-otp.c @@ -202,7 +202,7 @@ static int __init ab3100_otp_probe(struct platform_device *pdev) err = ab3100_otp_read(otp); if (err) - return err; + goto err_otp_read; dev_info(&pdev->dev, "AB3100 OTP readout registered\n"); @@ -211,21 +211,21 @@ static int __init ab3100_otp_probe(struct platform_device *pdev) err = device_create_file(&pdev->dev, &ab3100_otp_attrs[i]); if (err) - goto out_no_sysfs; + goto err_create_file; } /* debugfs entries */ err = ab3100_otp_init_debugfs(&pdev->dev, otp); if (err) - goto out_no_debugfs; + goto err_init_debugfs; return 0; -out_no_sysfs: - for (i = 0; i < ARRAY_SIZE(ab3100_otp_attrs); i++) - device_remove_file(&pdev->dev, - &ab3100_otp_attrs[i]); -out_no_debugfs: +err_init_debugfs: +err_create_file: + while (--i >= 0) + device_remove_file(&pdev->dev, &ab3100_otp_attrs[i]); +err_otp_read: kfree(otp); return err; } -- 1.5.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Linus WALLEIJ on 25 May 2010 03:10 [Axel] > In current implementation, there is a memory leak if ab3100_otp_read fail. > And in the case of ab3100_otp_init_debugfs fail, it does not properly > remove > sysfs entries. > This patch properly handle above failure cases. > > Signed-off-by: Axel Lin <axel.lin(a)gmail.com> Acked-by: Linus Walleij <linus.walleij(a)stericsson.com> Thanks for fixing this! Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Samuel Ortiz on 18 Jun 2010 14:20
Hi Axel, On Tue, May 25, 2010 at 02:49:51PM +0800, Axel Lin wrote: > In current implementation, there is a memory leak if ab3100_otp_read fail. > And in the case of ab3100_otp_init_debugfs fail, it does not properly remove > sysfs entries. > This patch properly handle above failure cases. Patch applied, thanks a lot. Cheers, Samuel. > Signed-off-by: Axel Lin <axel.lin(a)gmail.com> > --- > drivers/mfd/ab3100-otp.c | 16 ++++++++-------- > 1 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/mfd/ab3100-otp.c b/drivers/mfd/ab3100-otp.c > index 2d14655..939b876 100644 > --- a/drivers/mfd/ab3100-otp.c > +++ b/drivers/mfd/ab3100-otp.c > @@ -202,7 +202,7 @@ static int __init ab3100_otp_probe(struct platform_device *pdev) > > err = ab3100_otp_read(otp); > if (err) > - return err; > + goto err_otp_read; > > dev_info(&pdev->dev, "AB3100 OTP readout registered\n"); > > @@ -211,21 +211,21 @@ static int __init ab3100_otp_probe(struct platform_device *pdev) > err = device_create_file(&pdev->dev, > &ab3100_otp_attrs[i]); > if (err) > - goto out_no_sysfs; > + goto err_create_file; > } > > /* debugfs entries */ > err = ab3100_otp_init_debugfs(&pdev->dev, otp); > if (err) > - goto out_no_debugfs; > + goto err_init_debugfs; > > return 0; > > -out_no_sysfs: > - for (i = 0; i < ARRAY_SIZE(ab3100_otp_attrs); i++) > - device_remove_file(&pdev->dev, > - &ab3100_otp_attrs[i]); > -out_no_debugfs: > +err_init_debugfs: > +err_create_file: > + while (--i >= 0) > + device_remove_file(&pdev->dev, &ab3100_otp_attrs[i]); > +err_otp_read: > kfree(otp); > return err; > } > -- > 1.5.4.3 > > > -- Intel Open Source Technology Centre http://oss.intel.com/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |