Message ID | 20200617074023.30356-1-navid.emamdoost@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2] gpio: rcar: handle pm_runtime_get_sync failure case | expand |
On Wed, Jun 17, 2020 at 9:40 AM Navid Emamdoost <navid.emamdoost@gmail.com> wrote: > Calling pm_runtime_get_sync increments the counter even in case of > failure, causing incorrect ref count. Call pm_runtime_put if > pm_runtime_get_sync fails. > > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert
śr., 17 cze 2020 o 09:43 Geert Uytterhoeven <geert@linux-m68k.org> napisał(a): > > On Wed, Jun 17, 2020 at 9:40 AM Navid Emamdoost > <navid.emamdoost@gmail.com> wrote: > > Calling pm_runtime_get_sync increments the counter even in case of > > failure, causing incorrect ref count. Call pm_runtime_put if > > pm_runtime_get_sync fails. > > > > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> > > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > Is this stable material? Bart
Hi Bartosz, On Mon, Jun 22, 2020 at 6:54 PM Bartosz Golaszewski <bgolaszewski@baylibre.com> wrote: > śr., 17 cze 2020 o 09:43 Geert Uytterhoeven <geert@linux-m68k.org> napisał(a): > > On Wed, Jun 17, 2020 at 9:40 AM Navid Emamdoost > > <navid.emamdoost@gmail.com> wrote: > > > Calling pm_runtime_get_sync increments the counter even in case of > > > failure, causing incorrect ref count. Call pm_runtime_put if > > > pm_runtime_get_sync fails. > > > > > > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> > > > > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > > Is this stable material? No, it cannot happen anyway. Gr{oetje,eeting}s, Geert
diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c index 7284473c9fe3..8fb9079a1d60 100644 --- a/drivers/gpio/gpio-rcar.c +++ b/drivers/gpio/gpio-rcar.c @@ -250,8 +250,10 @@ static int gpio_rcar_request(struct gpio_chip *chip, unsigned offset) int error; error = pm_runtime_get_sync(p->dev); - if (error < 0) + if (error < 0) { + pm_runtime_put_noidle(p->dev); return error; + } error = pinctrl_gpio_request(chip->base + offset); if (error)
Calling pm_runtime_get_sync increments the counter even in case of failure, causing incorrect ref count. Call pm_runtime_put if pm_runtime_get_sync fails. Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> --- Changes in v2: - use pm_runtime_put_noidle --- drivers/gpio/gpio-rcar.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)