ep93xx: clock: Do not return the address of the freed memory
[platform/kernel/linux-starfive.git] / arch / arm / mach-ep93xx / clock.c
index 4fa6ea5..85a496d 100644 (file)
@@ -345,9 +345,10 @@ static struct clk_hw *clk_hw_register_ddiv(const char *name,
        psc->hw.init = &init;
 
        clk = clk_register(NULL, &psc->hw);
-       if (IS_ERR(clk))
+       if (IS_ERR(clk)) {
                kfree(psc);
-
+               return ERR_CAST(clk);
+       }
        return &psc->hw;
 }
 
@@ -452,9 +453,10 @@ static struct clk_hw *clk_hw_register_div(const char *name,
        psc->hw.init = &init;
 
        clk = clk_register(NULL, &psc->hw);
-       if (IS_ERR(clk))
+       if (IS_ERR(clk)) {
                kfree(psc);
-
+               return ERR_CAST(clk);
+       }
        return &psc->hw;
 }