Fix missing clk_disable_unprepare() before return from admv8818_clk_setup in the error handling cases. Fixes: f34fe888ad05 ("iio:filter:admv8818: add support for ADMV8818") Signed-off-by: Wang ShaoBo <bobo.shaobowang@xxxxxxxxxx> --- drivers/iio/filter/admv8818.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/iio/filter/admv8818.c b/drivers/iio/filter/admv8818.c index 68de45fe21b4..acb436efd8b5 100644 --- a/drivers/iio/filter/admv8818.c +++ b/drivers/iio/filter/admv8818.c @@ -590,14 +590,22 @@ static int admv8818_clk_setup(struct admv8818_state *st) ret = devm_add_action_or_reset(&spi->dev, admv8818_clk_disable, st); if (ret) - return ret; + goto out_clk_disable; st->nb.notifier_call = admv8818_freq_change; ret = clk_notifier_register(st->clkin, &st->nb); if (ret < 0) - return ret; + goto out_clk_disable; + + ret = devm_add_action_or_reset(&spi->dev, admv8818_clk_notifier_unreg, st); + if (ret) + goto out_clk_disable; + + return 0; - return devm_add_action_or_reset(&spi->dev, admv8818_clk_notifier_unreg, st); +out_clk_disable: + clk_disable_unprepare(st->clkin); + return ret; } static int admv8818_probe(struct spi_device *spi) -- 2.25.1