diff mbox series

spi: sprd: call pm_runtime_put if pm_runtime_get_sync fails

Message ID 20200602051959.60440-1-navid.emamdoost@gmail.com (mailing list archive)
State New, archived
Headers show
Series spi: sprd: call pm_runtime_put if pm_runtime_get_sync fails | expand

Commit Message

Navid Emamdoost June 2, 2020, 5:19 a.m. UTC
Call to pm_runtime_get_sync increments counter even in case of
failure leading to incorrect ref count.
Call pm_runtime_put_noidle if pm_runtime_get_sync fails.

Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
---
 drivers/spi/spi-sprd.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Baolin Wang June 2, 2020, 1:59 p.m. UTC | #1
Hi,

On Tue, Jun 2, 2020 at 1:20 PM Navid Emamdoost
<navid.emamdoost@gmail.com> wrote:
>
> Call to pm_runtime_get_sync increments counter even in case of
> failure leading to incorrect ref count.
> Call pm_runtime_put_noidle if pm_runtime_get_sync fails.
>
> Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>

Looks good to me. Thanks
Reviewed-by: Baolin Wang <baolin.wang7@gmail.com>

> ---
>  drivers/spi/spi-sprd.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/spi/spi-sprd.c b/drivers/spi/spi-sprd.c
> index 6678f1cbc566..860032af4b98 100644
> --- a/drivers/spi/spi-sprd.c
> +++ b/drivers/spi/spi-sprd.c
> @@ -1018,6 +1018,7 @@ static int sprd_spi_remove(struct platform_device *pdev)
>         ret = pm_runtime_get_sync(ss->dev);
>         if (ret < 0) {
>                 dev_err(ss->dev, "failed to resume SPI controller\n");
> +               pm_runtime_put_noidle(&pdev->dev);
>                 return ret;
>         }
>
> --
> 2.17.1
>
diff mbox series

Patch

diff --git a/drivers/spi/spi-sprd.c b/drivers/spi/spi-sprd.c
index 6678f1cbc566..860032af4b98 100644
--- a/drivers/spi/spi-sprd.c
+++ b/drivers/spi/spi-sprd.c
@@ -1018,6 +1018,7 @@  static int sprd_spi_remove(struct platform_device *pdev)
 	ret = pm_runtime_get_sync(ss->dev);
 	if (ret < 0) {
 		dev_err(ss->dev, "failed to resume SPI controller\n");
+		pm_runtime_put_noidle(&pdev->dev);
 		return ret;
 	}