drivers/iio/light/gp2ap002.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
pm_runtime_get_sync() increments the usage counter even on failure,
so every successful call must be paired with a put. A failure of
gp2ap002_get_lux() returned early and skipped the paired
pm_runtime_put_autosuspend(), permanently preventing runtime
suspend. Jump to the common exit that releases the reference.
Fixes: f6dbf83c17cb ("iio: light: gp2ap002: Take runtime PM reference on light read")
Cc: stable@vger.kernel.org
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
drivers/iio/light/gp2ap002.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/light/gp2ap002.c b/drivers/iio/light/gp2ap002.c
index a0d8a58f2704..886accf5e859 100644
--- a/drivers/iio/light/gp2ap002.c
+++ b/drivers/iio/light/gp2ap002.c
@@ -258,7 +258,7 @@ static int gp2ap002_read_raw(struct iio_dev *indio_dev,
case IIO_LIGHT:
ret = gp2ap002_get_lux(gp2ap002);
if (ret < 0)
- return ret;
+ goto out;
*val = ret;
ret = IIO_VAL_INT;
goto out;
--
2.34.1
On Wed, Sep 16, 2026 at 6:37 PM Wentao Liang <vulab@iscas.ac.cn> wrote:
> pm_runtime_get_sync() increments the usage counter even on failure,
> so every successful call must be paired with a put. A failure of
> gp2ap002_get_lux() returned early and skipped the paired
> pm_runtime_put_autosuspend(), permanently preventing runtime
> suspend. Jump to the common exit that releases the reference.
>
> Fixes: f6dbf83c17cb ("iio: light: gp2ap002: Take runtime PM reference on light read")
> Cc: stable@vger.kernel.org
IMO not stable material.
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Yours,
Linus Walleij
On Wed, 16 Sep 2026 19:34:56 +0200
Linus Walleij <linusw@kernel.org> wrote:
> On Wed, Sep 16, 2026 at 6:37 PM Wentao Liang <vulab@iscas.ac.cn> wrote:
>
> > pm_runtime_get_sync() increments the usage counter even on failure,
> > so every successful call must be paired with a put. A failure of
> > gp2ap002_get_lux() returned early and skipped the paired
> > pm_runtime_put_autosuspend(), permanently preventing runtime
> > suspend. Jump to the common exit that releases the reference.
> >
> > Fixes: f6dbf83c17cb ("iio: light: gp2ap002: Take runtime PM reference on light read")
> > Cc: stable@vger.kernel.org
>
> IMO not stable material.
Also that's not what upstream looks like:
https://elixir.bootlin.com/linux/v7.2.5/source/drivers/iio/light/gp2ap002.c#L246
Wentao, that function would definitely benefit form use of the
ACQUIRE macros in pm_runtime.h though if you do want to
improve it.
>
> > Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
>
> Reviewed-by: Linus Walleij <linusw@kernel.org>
>
> Yours,
> Linus Walleij
© 2016 - 2026 Red Hat, Inc.