2020-06-05 03:05:11

by Navid Emamdoost

[permalink] [raw]
Subject: [PATCH] gpio: arizona: put pm_runtime in case of failure

Calling pm_runtime_get_sync increments the counter even in case of
failure, causing incorrect ref count if pm_runtime_put is not called in
error handling paths. Call pm_runtime_put if pm_runtime_get_sync fails.

Signed-off-by: Navid Emamdoost <[email protected]>
---
drivers/gpio/gpio-arizona.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-arizona.c b/drivers/gpio/gpio-arizona.c
index 7520a13b4c7c..5bda38e0780f 100644
--- a/drivers/gpio/gpio-arizona.c
+++ b/drivers/gpio/gpio-arizona.c
@@ -64,6 +64,7 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset)
ret = pm_runtime_get_sync(chip->parent);
if (ret < 0) {
dev_err(chip->parent, "Failed to resume: %d\n", ret);
+ pm_runtime_put_autosuspend(chip->parent);
return ret;
}

@@ -72,12 +73,15 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset)
if (ret < 0) {
dev_err(chip->parent, "Failed to drop cache: %d\n",
ret);
+ pm_runtime_put_autosuspend(chip->parent);
return ret;
}

ret = regmap_read(arizona->regmap, reg, &val);
- if (ret < 0)
+ if (ret < 0) {
+ pm_runtime_put_autosuspend(chip->parent);
return ret;
+ }

pm_runtime_mark_last_busy(chip->parent);
pm_runtime_put_autosuspend(chip->parent);
--
2.17.1


2020-06-05 10:58:40

by Charles Keepax

[permalink] [raw]
Subject: Re: [PATCH] gpio: arizona: put pm_runtime in case of failure

On Thu, Jun 04, 2020 at 10:00:52PM -0500, Navid Emamdoost wrote:
> Calling pm_runtime_get_sync increments the counter even in case of
> failure, causing incorrect ref count if pm_runtime_put is not called in
> error handling paths. Call pm_runtime_put if pm_runtime_get_sync fails.
>
> Signed-off-by: Navid Emamdoost <[email protected]>
> ---

Acked-by: Charles Keepax <[email protected]>

Thanks,
Charles

2020-06-05 12:19:07

by Markus Elfring

[permalink] [raw]
Subject: Re: [PATCH] gpio: arizona: put pm_runtime in case of failure

I recommend to replace the word “pm_runtime” by the
alternative “PM run time system” in the patch subject.


> Calling pm_runtime_get_sync increments the counter even in case of
> failure, causing incorrect ref count if pm_runtime_put is not called in
> error handling paths.

Should the term “reference count” be used here?


> Call pm_runtime_put if pm_runtime_get_sync fails.

The diff hunks show an other function name.



> +++ b/drivers/gpio/gpio-arizona.c
> @@ -64,6 +64,7 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset)
> ret = pm_runtime_get_sync(chip->parent);
> if (ret < 0) {
> dev_err(chip->parent, "Failed to resume: %d\n", ret);
> + pm_runtime_put_autosuspend(chip->parent);
> return ret;
> }

You propose to use identical statements in three if branches.
Please add a corresponding jump target for better exception handling.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?id=435faf5c218a47fd6258187f62d9bb1009717896#n455


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


I find it amazing how many questionable implementation details
you pointed out recently.
Were these contributions triggered by an evolving source code analysis
tool like CheQ?
https://github.com/umnsec/cheq/

Regards,
Markus

2020-06-10 09:23:08

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH] gpio: arizona: put pm_runtime in case of failure

On Fri, Jun 5, 2020 at 5:01 AM Navid Emamdoost
<[email protected]> wrote:

> Calling pm_runtime_get_sync increments the counter even in case of
> failure, causing incorrect ref count if pm_runtime_put is not called in
> error handling paths. Call pm_runtime_put if pm_runtime_get_sync fails.
>
> Signed-off-by: Navid Emamdoost <[email protected]>

Patch applied for fixes.

Yours,
Linus Walleij

2020-06-10 18:57:08

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] gpio: arizona: put pm_runtime in case of failure

On Fri, Jun 05, 2020 at 02:14:38PM +0200, Markus Elfring wrote:
> I recommend to replace the word “pm_runtime” by the
> alternative “PM run time system” in the patch subject.
>
>
> > Calling pm_runtime_get_sync increments the counter even in case of
> > failure, causing incorrect ref count if pm_runtime_put is not called in
> > error handling paths.
>
> Should the term “reference count” be used here?
>
>
> > Call pm_runtime_put if pm_runtime_get_sync fails.
>
> The diff hunks show an other function name.
>
>
> …
> > +++ b/drivers/gpio/gpio-arizona.c
> > @@ -64,6 +64,7 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset)
> > ret = pm_runtime_get_sync(chip->parent);
> > if (ret < 0) {
> > dev_err(chip->parent, "Failed to resume: %d\n", ret);
> > + pm_runtime_put_autosuspend(chip->parent);
> > return ret;
> > }
>
> You propose to use identical statements in three if branches.
> Please add a corresponding jump target for better exception handling.
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?id=435faf5c218a47fd6258187f62d9bb1009717896#n455
>
>
> Would you like to add the tag “Fixes” to the commit message?
>
>
> I find it amazing how many questionable implementation details
> you pointed out recently.
> Were these contributions triggered by an evolving source code analysis
> tool like CheQ?
> https://github.com/umnsec/cheq/
>
> Regards,
> Markus

Hi,

This is the semi-friendly patch-bot of Greg Kroah-Hartman.

Markus, you seem to have sent a nonsensical or otherwise pointless
review comment to a patch submission on a Linux kernel developer mailing
list. I strongly suggest that you not do this anymore. Please do not
bother developers who are actively working to produce patches and
features with comments that, in the end, are a waste of time.

Patch submitter, please ignore Markus's suggestion; you do not need to
follow it at all. The person/bot/AI that sent it is being ignored by
almost all Linux kernel maintainers for having a persistent pattern of
behavior of producing distracting and pointless commentary, and
inability to adapt to feedback. Please feel free to also ignore emails
from them.

thanks,

greg k-h's patch email bot