Message ID | 20191002085309.9473-1-m.szyprowski@samsung.com (mailing list archive) |
---|---|
State | Awaiting Upstream, archived |
Headers | show |
Series | clk: samsung: exynos5433: Fix error paths | expand |
On Wed, Oct 02, 2019 at 10:53:09AM +0200, Marek Szyprowski wrote: > Add checking the value returned by samsung_clk_alloc_reg_dump() and > devm_kcalloc(). While fixing this, also release all gathered clocks. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- > drivers/clk/samsung/clk-exynos5433.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Best regards, Krzysztof
On 19. 10. 2. 오후 5:53, Marek Szyprowski wrote: > Add checking the value returned by samsung_clk_alloc_reg_dump() and > devm_kcalloc(). While fixing this, also release all gathered clocks. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- > drivers/clk/samsung/clk-exynos5433.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c > index 7824c2ba3d8e..0b60316331a0 100644 > --- a/drivers/clk/samsung/clk-exynos5433.c > +++ b/drivers/clk/samsung/clk-exynos5433.c > @@ -5584,6 +5584,8 @@ static int __init exynos5433_cmu_probe(struct platform_device *pdev) > > data->clk_save = samsung_clk_alloc_reg_dump(info->clk_regs, > info->nr_clk_regs); > + if (!data->clk_save) > + return -ENOMEM; > data->nr_clk_save = info->nr_clk_regs; > data->clk_suspend = info->suspend_regs; > data->nr_clk_suspend = info->nr_suspend_regs; > @@ -5592,12 +5594,19 @@ static int __init exynos5433_cmu_probe(struct platform_device *pdev) > if (data->nr_pclks > 0) { > data->pclks = devm_kcalloc(dev, sizeof(struct clk *), > data->nr_pclks, GFP_KERNEL); > - > + if (!data->pclks) { > + kfree(data->clk_save); > + return -ENOMEM; > + } > for (i = 0; i < data->nr_pclks; i++) { > struct clk *clk = of_clk_get(dev->of_node, i); > > - if (IS_ERR(clk)) > + if (IS_ERR(clk)) { > + kfree(data->clk_save); > + while (--i >= 0) > + clk_put(data->pclks[i]); > return PTR_ERR(clk); > + } > data->pclks[i] = clk; > } > } > Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Quoting Marek Szyprowski (2019-10-02 01:53:09) > Add checking the value returned by samsung_clk_alloc_reg_dump() and > devm_kcalloc(). While fixing this, also release all gathered clocks. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- Any fixes tag?
On 04.10.2019 23:45, Stephen Boyd wrote: > Quoting Marek Szyprowski (2019-10-02 01:53:09) >> Add checking the value returned by samsung_clk_alloc_reg_dump() and >> devm_kcalloc(). While fixing this, also release all gathered clocks. >> >> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> >> --- > Any fixes tag? Fixes: 523d3de41f02 ("clk: samsung: exynos5433: Add support for runtime PM") Best regards
On 10/2/19 10:53, Marek Szyprowski wrote: > Add checking the value returned by samsung_clk_alloc_reg_dump() and > devm_kcalloc(). While fixing this, also release all gathered clocks. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
On 10/2/19 10:53, Marek Szyprowski wrote: > Add checking the value returned by samsung_clk_alloc_reg_dump() and > devm_kcalloc(). While fixing this, also release all gathered clocks. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Applied, thanks.
diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c index 7824c2ba3d8e..0b60316331a0 100644 --- a/drivers/clk/samsung/clk-exynos5433.c +++ b/drivers/clk/samsung/clk-exynos5433.c @@ -5584,6 +5584,8 @@ static int __init exynos5433_cmu_probe(struct platform_device *pdev) data->clk_save = samsung_clk_alloc_reg_dump(info->clk_regs, info->nr_clk_regs); + if (!data->clk_save) + return -ENOMEM; data->nr_clk_save = info->nr_clk_regs; data->clk_suspend = info->suspend_regs; data->nr_clk_suspend = info->nr_suspend_regs; @@ -5592,12 +5594,19 @@ static int __init exynos5433_cmu_probe(struct platform_device *pdev) if (data->nr_pclks > 0) { data->pclks = devm_kcalloc(dev, sizeof(struct clk *), data->nr_pclks, GFP_KERNEL); - + if (!data->pclks) { + kfree(data->clk_save); + return -ENOMEM; + } for (i = 0; i < data->nr_pclks; i++) { struct clk *clk = of_clk_get(dev->of_node, i); - if (IS_ERR(clk)) + if (IS_ERR(clk)) { + kfree(data->clk_save); + while (--i >= 0) + clk_put(data->pclks[i]); return PTR_ERR(clk); + } data->pclks[i] = clk; } }
Add checking the value returned by samsung_clk_alloc_reg_dump() and devm_kcalloc(). While fixing this, also release all gathered clocks. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> --- drivers/clk/samsung/clk-exynos5433.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)