5.0-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Krzysztof Kozlowski <k...@kernel.org>

commit 5f0b6216ea381b43c0dff88702d6cc5673d63922 upstream.

During initialization of subdevices if platform_device_alloc() failed,
returned NULL pointer will be later dereferenced.  Add proper error
paths to exynos5_clk_register_subcmu().  The return value of this
function is still ignored because at this stage of init there is nothing
we can do.

Fixes: b06a532bf1fa ("clk: samsung: Add Exynos5 sub-CMU clock driver")
Cc: <sta...@vger.kernel.org>
Signed-off-by: Krzysztof Kozlowski <k...@kernel.org>
Reviewed-by: Geert Uytterhoeven <geert+rene...@glider.be>
Signed-off-by: Stephen Boyd <sb...@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
 drivers/clk/samsung/clk-exynos5-subcmu.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

--- a/drivers/clk/samsung/clk-exynos5-subcmu.c
+++ b/drivers/clk/samsung/clk-exynos5-subcmu.c
@@ -136,15 +136,21 @@ static int __init exynos5_clk_register_s
 {
        struct of_phandle_args genpdspec = { .np = pd_node };
        struct platform_device *pdev;
+       int ret;
 
        pdev = platform_device_alloc(info->pd_name, -1);
+       if (!pdev)
+               return -ENOMEM;
+
        pdev->dev.parent = parent;
        pdev->driver_override = "exynos5-subcmu";
        platform_set_drvdata(pdev, (void *)info);
        of_genpd_add_device(&genpdspec, &pdev->dev);
-       platform_device_add(pdev);
+       ret = platform_device_add(pdev);
+       if (ret)
+               platform_device_put(pdev);
 
-       return 0;
+       return ret;
 }
 
 static int __init exynos5_clk_probe(struct platform_device *pdev)


Reply via email to