clk: imx: scu: Fix kfree() of static memory on setting driver_override
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tue, 19 Apr 2022 11:34:32 +0000 (13:34 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 Apr 2022 15:13:54 +0000 (17:13 +0200)
The driver_override field from platform driver should not be initialized
from static memory (string literal) because the core later kfree() it,
for example when driver_override is set via sysfs.

Use dedicated helper to set driver_override properly.

Fixes: 77d8f3068c63 ("clk: imx: scu: add two cells binding support")
Acked-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20220419113435.246203-10-krzysztof.kozlowski@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/clk/imx/clk-scu.c

index 083da31..4b2268b 100644 (file)
@@ -683,7 +683,12 @@ struct clk_hw *imx_clk_scu_alloc_dev(const char *name,
                return ERR_PTR(ret);
        }
 
-       pdev->driver_override = "imx-scu-clk";
+       ret = driver_set_override(&pdev->dev, &pdev->driver_override,
+                                 "imx-scu-clk", strlen("imx-scu-clk"));
+       if (ret) {
+               platform_device_put(pdev);
+               return ERR_PTR(ret);
+       }
 
        ret = imx_clk_scu_attach_pd(&pdev->dev, rsrc_id);
        if (ret)