clk: clocking-wizard: Fix Oops in clk_wzrd_register_divider()
authorDan Carpenter <dan.carpenter@linaro.org>
Thu, 11 May 2023 17:01:20 +0000 (20:01 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jul 2023 14:21:30 +0000 (16:21 +0200)
[ Upstream commit 9c632a6396505a019ea6d12b5ab45e659a542a93 ]

Smatch detected this potential error pointer dereference
clk_wzrd_register_divider().  If devm_clk_hw_register() fails then
it sets "hw" to an error pointer and then dereferences it on the
next line.  Return the error directly instead.

Fixes: 5a853722eb32 ("staging: clocking-wizard: Add support for dynamic reconfiguration")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/f0e39b5c-4554-41e0-80d9-54ca3fabd060@kili.mountain
Reviewed-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/clk/xilinx/clk-xlnx-clock-wizard.c

index eb1dfe7ecc1b43edddc1db13ca5b32d99a58e97f..4a23583933bcc339d87d942e48c877567966a93c 100644 (file)
@@ -354,7 +354,7 @@ static struct clk *clk_wzrd_register_divider(struct device *dev,
        hw = &div->hw;
        ret = devm_clk_hw_register(dev, hw);
        if (ret)
-               hw = ERR_PTR(ret);
+               return ERR_PTR(ret);
 
        return hw->clk;
 }