sp7021_spi_controller_resume() enables the controller clock with clk_prepare_enable(), but the matching suspend callback sp7021_spi_controller_suspend() only asserts the reset line and never disables/unprepares the clock. Every system sleep suspend/resume cycle therefore leaks one clock prepare/enable reference, leaving the clock usage count permanently unbalanced. Add the missing clk_disable_unprepare() to the suspend callback, in reverse order of the resume sequence. Fixes: f62ca4e2a863 ("spi: Add spi driver for Sunplus SP7021") Cc: stable@vger.kernel.org Signed-off-by: Zhao Feng --- Verified against current upstream master; the probe path has been converted to devm_clk_get_enabled() upstream but the suspend/resume asymmetry is unchanged. Not runtime-tested (no SP7021 hardware). drivers/spi/spi-sunplus-sp7021.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/spi/spi-sunplus-sp7021.c b/drivers/spi/spi-sunplus-sp7021.c --- a/drivers/spi/spi-sunplus-sp7021.c +++ b/drivers/spi/spi-sunplus-sp7021.c @@ -509,6 +509,8 @@ static int sp7021_spi_controller_suspend(struct device *dev) struct spi_controller *ctlr = dev_get_drvdata(dev); struct sp7021_spi_ctlr *pspim = spi_controller_get_devdata(ctlr); + clk_disable_unprepare(pspim->spi_clk); + return reset_control_assert(pspim->rstc); } -- 2.39.2