[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-id: <5037376A.9000507@samsung.com>
Date: Fri, 24 Aug 2012 17:12:26 +0900
From: jonghwa3.lee@...sung.com
To: jonghwa3.lee@...sung.com
Cc: Mike Turquette <mturquette@...aro.org>,
linux-kernel@...r.kernel.org, Arnd Bergmann <arnd@...db.de>,
H Hartley Sweeten <hsweeten@...ionengravers.com>,
MyungJoo Ham <myungjoo.ham@...sung.com>,
Kyungmin Park <kyungmin.park@...sung.com>
Subject: Re: [PATCH v4] clock: max77686: Add driver for Maxim 77686 32KHz
crystal oscillator
On 2012년 08월 24일 16:47, jonghwa3.lee@...sung.com wrote:
> On 2012년 08월 24일 11:07, Mike Turquette wrote:
>>> + struct clk *clk;
>>> +
>>> + clk = clk_register(dev, clk_name[clk_id], &clk_max77686_ops,
>>> + &max77686->hw, NULL, 0, CLK_IS_ROOT);
>>> +
>>> + if (IS_ERR(clk))
>>> + return -ENOMEM;
>>> +
>>> + max77686->lookup = devm_kzalloc(dev, sizeof(struct clk_lookup),
>>> + GFP_KERNEL);
>>> + if (IS_ERR(max77686->lookup))
>>> + return -ENOMEM;
>>> +
>>> + max77686->lookup->con_id = clk_name[clk_id];
>>> + max77686->lookup->clk = clk;
>>> +
>>> + clkdev_add(max77686->lookup);
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +static __devinit int max77686_clk_probe(struct platform_device *pdev)
>>> +{
>>> + struct max77686_dev *iodev = dev_get_drvdata(pdev->dev.parent);
>>> + struct clk_max77686 *max77686[MAX77686_CLKS_NUM];
>>> + int i, ret;
>>> +
>>> + for (i = 0; i < MAX77686_CLKS_NUM; i++) {
>>> + max77686[i] = devm_kzalloc(&pdev->dev,
>>> + sizeof(struct clk_max77686), GFP_KERNEL);
>>> + if (!max77686[i])
>>> + return -ENOMEM;
>>> +
>>> + max77686[i]->iodev = iodev;
>>> + max77686[i]->mask = 1 << i;
>>> +
>>> + ret = max77686_clk_register(&pdev->dev, max77686[i], i);
>>> + if (ret) {
>>> + dev_err(&pdev->dev, "Fail to register clock\n");
>>> + return ret;
>>> + }
>> There is a memory leak if you successfully register any clocks and then
>> fail to register the others. Be sure to unwind the loop and kfree those
>> clocks in such a case (since this appears fatal).
> I think it'll free memory allocation automatically, because It is used
> devm_kzalloc. Am I wrong?
>
>
Sorry, I misunderstood. Yes, you're right. Since clk has been allocated
with kzalloc it would be released for the failing.
Thanks for advisement. I'll fix it.
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists