drivers/clk/qcom/common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
The devm_clk_hw_get_clk() function returns error pointers.
It never returns NULL. Update the check accordingly.
Fixes: 8737ec830ee3 ("clk: qcom: common: Add interconnect clocks support")'
Signed-off-by: Yan Zhen <yanzhen@vivo.com>
---
Changes in v3:
- Providing a "fixes" tag blaming the commit.
drivers/clk/qcom/common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c
index 33cc1f73c69d..5a9e653916ea 100644
--- a/drivers/clk/qcom/common.c
+++ b/drivers/clk/qcom/common.c
@@ -273,8 +273,8 @@ static int qcom_cc_icc_register(struct device *dev,
icd[i].slave_id = desc->icc_hws[i].slave_id;
hws = &desc->clks[desc->icc_hws[i].clk_id]->hw;
icd[i].clk = devm_clk_hw_get_clk(dev, hws, "icc");
- if (!icd[i].clk)
- return dev_err_probe(dev, -ENOENT,
+ if (IS_ERR(icd[i].clk))
+ return dev_err_probe(dev, PTR_ERR(icd[i].clk),
"(%d) clock entry is null\n", i);
icd[i].name = clk_hw_get_name(hws);
}
--
2.34.1
Le 27/08/2024 à 04:52, Yan Zhen a écrit :
> The devm_clk_hw_get_clk() function returns error pointers.
> It never returns NULL. Update the check accordingly.
>
> Fixes: 8737ec830ee3 ("clk: qcom: common: Add interconnect clocks support")'
> Signed-off-by: Yan Zhen <yanzhen@vivo.com>
> ---
>
> Changes in v3:
> - Providing a "fixes" tag blaming the commit.
>
> drivers/clk/qcom/common.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c
> index 33cc1f73c69d..5a9e653916ea 100644
> --- a/drivers/clk/qcom/common.c
> +++ b/drivers/clk/qcom/common.c
> @@ -273,8 +273,8 @@ static int qcom_cc_icc_register(struct device *dev,
> icd[i].slave_id = desc->icc_hws[i].slave_id;
> hws = &desc->clks[desc->icc_hws[i].clk_id]->hw;
> icd[i].clk = devm_clk_hw_get_clk(dev, hws, "icc");
> - if (!icd[i].clk)
> - return dev_err_probe(dev, -ENOENT,
> + if (IS_ERR(icd[i].clk))
> + return dev_err_probe(dev, PTR_ERR(icd[i].clk),
> "(%d) clock entry is null\n", i);
Nitpick: Maybe the message could be updated as-well?
CJ
> icd[i].name = clk_hw_get_name(hws);
> }
On Tue, Aug 27, 2024 at 10:52:52AM GMT, Yan Zhen wrote:
> The devm_clk_hw_get_clk() function returns error pointers.
> It never returns NULL. Update the check accordingly.
>
> Fixes: 8737ec830ee3 ("clk: qcom: common: Add interconnect clocks support")'
> Signed-off-by: Yan Zhen <yanzhen@vivo.com>
> ---
>
> Changes in v3:
> - Providing a "fixes" tag blaming the commit.
>
> drivers/clk/qcom/common.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
--
With best wishes
Dmitry
Quoting Yan Zhen (2024-08-26 19:52:52) > The devm_clk_hw_get_clk() function returns error pointers. > It never returns NULL. Update the check accordingly. It can return NULL if the 'hw' pointer passed in is NULL.
On Tue, Aug 27, 2024 at 11:18:10AM GMT, Stephen Boyd wrote:
> Quoting Yan Zhen (2024-08-26 19:52:52)
> > The devm_clk_hw_get_clk() function returns error pointers.
> > It never returns NULL. Update the check accordingly.
>
> It can return NULL if the 'hw' pointer passed in is NULL.
No, it will crash:
WARN_ON_ONCE(dev != hw->core->dev);
Furthermore, clk_hw_get_clk() also doesn't have NULL checks and will
crash if NULL is passed as hw.
struct clk *clk_hw_get_clk(struct clk_hw *hw, const char *con_id)
{
struct device *dev = hw->core->dev;
--
With best wishes
Dmitry
Quoting Dmitry Baryshkov (2024-08-29 02:06:51) > On Tue, Aug 27, 2024 at 11:18:10AM GMT, Stephen Boyd wrote: > > Quoting Yan Zhen (2024-08-26 19:52:52) > > > The devm_clk_hw_get_clk() function returns error pointers. > > > It never returns NULL. Update the check accordingly. > > > > It can return NULL if the 'hw' pointer passed in is NULL. > > No, it will crash: > > WARN_ON_ONCE(dev != hw->core->dev); > > Furthermore, clk_hw_get_clk() also doesn't have NULL checks and will > crash if NULL is passed as hw. Ah, thanks. I misread it as clk_hw_create_clk().
> > The devm_clk_hw_get_clk() function returns error pointers. > > It never returns NULL. Update the check accordingly. > > It can return NULL if the 'hw' pointer passed in is NULL. How does this view fit to a published function implementation? https://elixir.bootlin.com/linux/v6.11-rc5/source/drivers/clk/clk.c#L4703 Regards, Markus
© 2016 - 2025 Red Hat, Inc.