Re: [PATCH v2] iio: frequency: adf4377: Fully initialize clk_init_data and clk_parent_data
Jonathan Cameron <[email protected]>
| Newsgroups | org.kernel.vger.linux-clk,org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260821020554.23fa7d19@jic23-huawei> |
On Thu, 20 Aug 2026 11:19:52 +0200 Geert Uytterhoeven <[email protected]> wrote: > The clk_init_data structure contains several mutually-exclusive members > for different methods to specify the possible parents of a clock, > prompting drivers to initialize only the members they need. However, > not initializing all members may cause subtle issues, which are only > exposed when CONFIG_INIT_STACK_ALL_PATTERN or CONFIG_INIT_STACK_NONE is > enabled. > > adf4377_clk_register() fills in init.parent_data, and assumes that > init.parent_names is NULL. However, the latter is uninitialized, and > thus may cause a crash. > > Similarly, adf4377_clk_register() fills in only parent_data.fw_name, > leaving other members of the clk_parent_data structure uninitialized. > > Make sure all members are fully initialized, to fix such bugs, and to > avoid future breakage when converting drivers to a different method for > specifying the parents. > > Fixes: 60e5448ddbec2dc2 ("iio: frequency: adf4377: add clk provider support") > Signed-off-by: Geert Uytterhoeven <[email protected]> > --- Dropped v1 and picked this up, marking it for stable and tweaking a little to add spaces { } That's an IIO specific style choice. Thanks Jonathan > Compile-tested only. > > v2: > - Extract from series "[PATCH treewide 0/5] clk: Make sure > clk_init_data is fully initialized (part 1)" > (https://lore.kernel.org/[email protected]), > - Fully initialize clk_parent_data too, as pointed out by Sashiko. > --- > drivers/iio/frequency/adf4377.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/frequency/adf4377.c b/drivers/iio/frequency/adf4377.c > index 4dd19a9aa9943c57..b8c31665857c5201 100644 > --- a/drivers/iio/frequency/adf4377.c > +++ b/drivers/iio/frequency/adf4377.c > @@ -988,10 +988,10 @@ static const struct clk_ops adf4377_clk_ops = { > > static int adf4377_clk_register(struct adf4377_state *st) > { > + struct clk_parent_data parent_data = {}; > struct spi_device *spi = st->spi; > struct device *dev = &spi->dev; > - struct clk_init_data init; > - struct clk_parent_data parent_data; > + struct clk_init_data init = {}; > int ret; > > if (!device_property_present(dev, "#clock-cells"))