2020-06-02 05:22:24

by Navid Emamdoost

[permalink] [raw]
Subject: [PATCH] spi: sprd: call pm_runtime_put if pm_runtime_get_sync fails

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 <[email protected]>
---
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


2020-06-02 09:07:48

by Markus Elfring

[permalink] [raw]
Subject: Re: [PATCH] spi: sprd: call pm_runtime_put if pm_runtime_get_sync fails

> 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.

How do you think about a wording variant like the following?

Change description:
The PM runtime reference counter is generally incremented by a call of
the function “pm_runtime_get_sync”.
Thus call the function “pm_runtime_put_noidle” also in one error case
to keep the reference counting consistent.


Would you like to add the tag “Fixes” to the commit message?

Regards,
Markus

2020-06-02 14:05:45

by Baolin Wang

[permalink] [raw]
Subject: Re: [PATCH] spi: sprd: call pm_runtime_put if pm_runtime_get_sync fails

Hi,

On Tue, Jun 2, 2020 at 1:20 PM Navid Emamdoost
<[email protected]> 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 <[email protected]>

Looks good to me. Thanks
Reviewed-by: Baolin Wang <[email protected]>

> ---
> 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
>


--
Baolin Wang