Message ID | 1577790048-18263-2-git-send-email-tdas@codeaurora.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add support for IPA clock for SC7180 | expand |
Quoting Taniya Das (2019-12-31 03:00:47) > diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c > index 7ed313a..05cbe6f 100644 > --- a/drivers/clk/qcom/clk-rpmh.c > +++ b/drivers/clk/qcom/clk-rpmh.c > @@ -462,7 +464,8 @@ static int clk_rpmh_probe(struct platform_device *pdev) > > ret = devm_clk_hw_register(&pdev->dev, hw_clks[i]); > if (ret) { > - dev_err(&pdev->dev, "failed to register %s\n", name); > + dev_err(&pdev->dev, "failed to register %s\n", > + hw_clks[i]->init->name); After register clk_hw::init is NULL. This will probably oops. It would be better to save off the name before registering.
Hello Stephen, Thanks for your review comments. On 1/2/2020 6:26 AM, Stephen Boyd wrote: > Quoting Taniya Das (2019-12-31 03:00:47) >> diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c >> index 7ed313a..05cbe6f 100644 >> --- a/drivers/clk/qcom/clk-rpmh.c >> +++ b/drivers/clk/qcom/clk-rpmh.c >> @@ -462,7 +464,8 @@ static int clk_rpmh_probe(struct platform_device *pdev) >> >> ret = devm_clk_hw_register(&pdev->dev, hw_clks[i]); >> if (ret) { >> - dev_err(&pdev->dev, "failed to register %s\n", name); >> + dev_err(&pdev->dev, "failed to register %s\n", >> + hw_clks[i]->init->name); > > After register clk_hw::init is NULL. This will probably oops. It would > be better to save off the name before registering. > Will take care in the next patch series.
diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c index 7ed313a..05cbe6f 100644 --- a/drivers/clk/qcom/clk-rpmh.c +++ b/drivers/clk/qcom/clk-rpmh.c @@ -431,11 +431,13 @@ static int clk_rpmh_probe(struct platform_device *pdev) hw_clks = desc->clks; for (i = 0; i < desc->num_clks; i++) { - const char *name = hw_clks[i]->init->name; u32 res_addr; size_t aux_data_len; const struct bcm_db *data; + if (!hw_clks[i]) + continue; + rpmh_clk = to_clk_rpmh(hw_clks[i]); res_addr = cmd_db_read_addr(rpmh_clk->res_name); if (!res_addr) { @@ -462,7 +464,8 @@ static int clk_rpmh_probe(struct platform_device *pdev) ret = devm_clk_hw_register(&pdev->dev, hw_clks[i]); if (ret) { - dev_err(&pdev->dev, "failed to register %s\n", name); + dev_err(&pdev->dev, "failed to register %s\n", + hw_clks[i]->init->name); return ret; } }
When iterating over a platform's available clocks in clk_rpmh_probe(), check for undefined (null) entries in the clocks array. Not all clock indexes necessarily have clocks defined. Also remove referencing the clock name before valid hardware. Signed-off-by: Taniya Das <tdas@codeaurora.org> --- drivers/clk/qcom/clk-rpmh.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -- Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.