2021-07-09 09:39:32

by Evgeny Novikov

[permalink] [raw]
Subject: [PATCH] mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare()

hisi_spi_nor_probe() invokes clk_disable_unprepare() on all paths after
successful call of clk_prepare_enable(), so, there is no need in one
more clk_disable_unprepare() in hisi_spi_nor_remove(). The patch fixes
that.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Evgeny Novikov <[email protected]>
---
drivers/mtd/spi-nor/controllers/hisi-sfc.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/mtd/spi-nor/controllers/hisi-sfc.c b/drivers/mtd/spi-nor/controllers/hisi-sfc.c
index 47fbf1d1e557..516e50269478 100644
--- a/drivers/mtd/spi-nor/controllers/hisi-sfc.c
+++ b/drivers/mtd/spi-nor/controllers/hisi-sfc.c
@@ -477,7 +477,6 @@ static int hisi_spi_nor_remove(struct platform_device *pdev)

hisi_spi_nor_unregister_all(host);
mutex_destroy(&host->lock);
- clk_disable_unprepare(host->clk);
return 0;
}

--
2.26.2


2021-07-09 10:21:21

by Pratyush Yadav

[permalink] [raw]
Subject: Re: [PATCH] mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare()

On 09/07/21 12:35PM, Evgeny Novikov wrote:
> hisi_spi_nor_probe() invokes clk_disable_unprepare() on all paths after
> successful call of clk_prepare_enable(), so, there is no need in one
> more clk_disable_unprepare() in hisi_spi_nor_remove(). The patch fixes
> that.

This is true, but I think the patch should also mention that the clock
is enabled by hispi_spi_nor_prep() and disabled by
hispi_spi_nor_unprep(). So at remove time it is not possible to have the
clock enabled.

The big point is not that the probe disabled the clock, but that every
path would make sure to disable the clock, so it will already be
disabled when remove is called.

>
> Found by Linux Driver Verification project (linuxtesting.org).
>

Fixes tag?

With these comments addressed,

Reviewed-by: Pratyush Yadav <[email protected]>

> Signed-off-by: Evgeny Novikov <[email protected]>
> ---
> drivers/mtd/spi-nor/controllers/hisi-sfc.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/mtd/spi-nor/controllers/hisi-sfc.c b/drivers/mtd/spi-nor/controllers/hisi-sfc.c
> index 47fbf1d1e557..516e50269478 100644
> --- a/drivers/mtd/spi-nor/controllers/hisi-sfc.c
> +++ b/drivers/mtd/spi-nor/controllers/hisi-sfc.c
> @@ -477,7 +477,6 @@ static int hisi_spi_nor_remove(struct platform_device *pdev)
>
> hisi_spi_nor_unregister_all(host);
> mutex_destroy(&host->lock);
> - clk_disable_unprepare(host->clk);
> return 0;
> }
>
> --
> 2.26.2
>

--
Regards,
Pratyush Yadav
Texas Instruments Inc.