From: Yang Xiwen <[email protected]>

Check the uclass id in clk_get_parent() before casting dev->priv to
struct clk *.  This sanity check can be also found in some other places
and should be enforced.

Signed-off-by: Yang Xiwen <[email protected]>
---
 drivers/clk/clk-uclass.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index 2167cd5ad0fe..bd18de972bb9 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -502,6 +502,10 @@ struct clk *clk_get_parent(struct clk *clk)
        pdev = dev_get_parent(clk->dev);
        if (!pdev)
                return ERR_PTR(-ENODEV);
+
+       if (device_get_uclass_id(pdev) != UCLASS_CLK)
+               return ERR_PTR(-ENODEV);
+
        pclk = dev_get_clk_ptr(pdev);
        if (!pclk)
                return ERR_PTR(-ENODEV);

-- 
2.43.0


Reply via email to