lkml.org 
[lkml]   [2019]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 12/28] clk: sirf: Don't reference clk_init_data after registration
    Date
    From: Stephen Boyd <sboyd@kernel.org>

    [ Upstream commit af55dadfbce35b4f4c6247244ce3e44b2e242b84 ]

    A future patch is going to change semantics of clk_register() so that
    clk_hw::init is guaranteed to be NULL after a clk is registered. Avoid
    referencing this member here so that we don't run into NULL pointer
    exceptions.

    Cc: Guo Zeng <Guo.Zeng@csr.com>
    Cc: Barry Song <Baohua.Song@csr.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Link: https://lkml.kernel.org/r/20190731193517.237136-6-sboyd@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clk/sirf/clk-common.c | 12 ++++++++----
    1 file changed, 8 insertions(+), 4 deletions(-)

    diff --git a/drivers/clk/sirf/clk-common.c b/drivers/clk/sirf/clk-common.c
    index 77e1e2491689b..edb7197cc4b4d 100644
    --- a/drivers/clk/sirf/clk-common.c
    +++ b/drivers/clk/sirf/clk-common.c
    @@ -298,9 +298,10 @@ static u8 dmn_clk_get_parent(struct clk_hw *hw)
    {
    struct clk_dmn *clk = to_dmnclk(hw);
    u32 cfg = clkc_readl(clk->regofs);
    + const char *name = clk_hw_get_name(hw);

    /* parent of io domain can only be pll3 */
    - if (strcmp(hw->init->name, "io") == 0)
    + if (strcmp(name, "io") == 0)
    return 4;

    WARN_ON((cfg & (BIT(3) - 1)) > 4);
    @@ -312,9 +313,10 @@ static int dmn_clk_set_parent(struct clk_hw *hw, u8 parent)
    {
    struct clk_dmn *clk = to_dmnclk(hw);
    u32 cfg = clkc_readl(clk->regofs);
    + const char *name = clk_hw_get_name(hw);

    /* parent of io domain can only be pll3 */
    - if (strcmp(hw->init->name, "io") == 0)
    + if (strcmp(name, "io") == 0)
    return -EINVAL;

    cfg &= ~(BIT(3) - 1);
    @@ -354,7 +356,8 @@ static long dmn_clk_round_rate(struct clk_hw *hw, unsigned long rate,
    {
    unsigned long fin;
    unsigned ratio, wait, hold;
    - unsigned bits = (strcmp(hw->init->name, "mem") == 0) ? 3 : 4;
    + const char *name = clk_hw_get_name(hw);
    + unsigned bits = (strcmp(name, "mem") == 0) ? 3 : 4;

    fin = *parent_rate;
    ratio = fin / rate;
    @@ -376,7 +379,8 @@ static int dmn_clk_set_rate(struct clk_hw *hw, unsigned long rate,
    struct clk_dmn *clk = to_dmnclk(hw);
    unsigned long fin;
    unsigned ratio, wait, hold, reg;
    - unsigned bits = (strcmp(hw->init->name, "mem") == 0) ? 3 : 4;
    + const char *name = clk_hw_get_name(hw);
    + unsigned bits = (strcmp(name, "mem") == 0) ? 3 : 4;

    fin = parent_rate;
    ratio = fin / rate;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-09-24 18:51    [W:3.176 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site