[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a5b98edc-2a22-0c45-cc77-a07efd248fe1@samsung.com>
Date: Thu, 8 Aug 2019 18:14:34 +0200
From: Sylwester Nawrocki <s.nawrocki@...sung.com>
To: Stephen Boyd <sboyd@...nel.org>,
Michael Turquette <mturquette@...libre.com>
Cc: linux-kernel@...r.kernel.org, linux-clk@...r.kernel.org,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Doug Anderson <dianders@...omium.org>
Subject: Re: [PATCH 9/9] clk: Overwrite clk_hw::init with NULL during
clk_register()
On 7/31/19 21:35, Stephen Boyd wrote:
> We don't want clk provider drivers to use the init structure after clk
> registration time, but we leave a dangling reference to it by means of
> clk_hw::init. Let's overwrite the member with NULL during clk_register()
> so that this can't be used anymore after registration time.
>
> Cc: Bjorn Andersson <bjorn.andersson@...aro.org>
> Cc: Doug Anderson <dianders@...omium.org>
> Signed-off-by: Stephen Boyd <sboyd@...nel.org>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@...sung.com>
> drivers/clk/clk.c | 24 ++++++++++++++++--------
> include/linux/clk-provider.h | 3 ++-
> 2 files changed, 18 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index c0990703ce54..efac620264a2 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -3484,9 +3484,9 @@ static int clk_cpy_name(const char **dst_p, const char *src, bool must_exist)
> return 0;
> }
>
> -static int clk_core_populate_parent_map(struct clk_core *core)
> +static int clk_core_populate_parent_map(struct clk_core *core,
> + const struct clk_init_data *init)
> {
> - const struct clk_init_data *init = core->hw->init;
> u8 num_parents = init->num_parents;
> const char * const *parent_names = init->parent_names;
> const struct clk_hw **parent_hws = init->parent_hws;
> @@ -3566,6 +3566,14 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw)
> {
> int ret;
> struct clk_core *core;
> + const struct clk_init_data *init = hw->init;
> +
> + /*
> + * The init data is not supposed to be used outside of registration path.
> + * Set it to NULL so that provider drivers can't use it either and so that
> + * we catch use of hw->init early on in the core.
> + */
nit: This comment could be re-edited to not exceed 80 columns limit.
> + hw->init = NULL;
Powered by blists - more mailing lists