mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
iio: frequency: adf4377: Fully initialize clk_init_data and clk_parent_data
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: 60e5448ddb ("iio: frequency: adf4377: add clk provider support")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Brian Masney <bmasney@redhat.com>
Reviewed-by: Joshua Crofts <joshua.crofts1@gmail.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
This commit is contained in:
parent
fbf33cb183
commit
e787fd23d5
|
|
@ -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"))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user