Hi Zhang On 11/6/20 2:53 AM, Zhang Qilong wrote: > pm_runtime_get_sync will increment pm usage counter even it > failed. Forgetting to pm_runtime_put_noidle will result in > reference leak in two callers(stm32_qspi_exec_op and > stm32_qspi_setup), so we should fix it. > > Fixes: 9d282c17b023a ("spi: stm32-qspi: Add pm_runtime support") > Signed-off-by: Zhang Qilong <zhangqilong3@xxxxxxxxxx> > --- > drivers/spi/spi-stm32-qspi.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/spi/spi-stm32-qspi.c b/drivers/spi/spi-stm32-qspi.c > index a900962b4336..947e6b9dc9f4 100644 > --- a/drivers/spi/spi-stm32-qspi.c > +++ b/drivers/spi/spi-stm32-qspi.c > @@ -434,8 +434,10 @@ static int stm32_qspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) > int ret; > > ret = pm_runtime_get_sync(qspi->dev); > - if (ret < 0) > + if (ret < 0) { > + pm_runtime_put_noidle(qspi->dev); > return ret; > + } > > mutex_lock(&qspi->lock); > ret = stm32_qspi_send(mem, op); > @@ -462,8 +464,10 @@ static int stm32_qspi_setup(struct spi_device *spi) > return -EINVAL; > > ret = pm_runtime_get_sync(qspi->dev); > - if (ret < 0) > + if (ret < 0) { > + pm_runtime_put_noidle(qspi->dev); > return ret; > + } > > presc = DIV_ROUND_UP(qspi->clk_rate, spi->max_speed_hz) - 1; > Reviewed-by: Patrice Chotard <patrice.chotard@xxxxxx> Thanks