Re: [PATCH] iio: srf04: fix pm_runtime handling on probe error path

Jonathan Cameron <[email protected]> Sat, 1 Aug 2026 03:55:33 +0100
Newsgroups org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel
Message-ID <20260801035533.1a854a57@jic23-huawei>
On Mon, 27 Jul 2026 22:51:15 +0700
Cong Nguyen <[email protected]> wrote:

> When pm_runtime_set_active() fails during probe, the driver logs the
> error and unregisters the IIO device, but then falls through and still
> calls pm_runtime_enable() before returning the error.
> 
> Since probe returns an error, srf04_remove() is never called, so
> runtime PM is left enabled without a matching pm_runtime_disable().
> This leaks the enable and triggers an "Unbalanced pm_runtime_enable!"
> warning on a subsequent bind of the device.
> 
> Return the error right after unregistering the IIO device so that
> runtime PM is not enabled on the failure path.
> 
> Fixes: 2251157b335b ("iio: srf04: add power management feature")
> Cc: [email protected]
> Signed-off-by: Cong Nguyen <[email protected]>
Applied to the fixes-togreg branch of iio.git.

Thanks,

Jonathan


> ---
>  drivers/iio/proximity/srf04.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/iio/proximity/srf04.c b/drivers/iio/proximity/srf04.c
> index e97f9a20ac7a..337938657449 100644
> --- a/drivers/iio/proximity/srf04.c
> +++ b/drivers/iio/proximity/srf04.c
> @@ -331,6 +331,7 @@ static int srf04_probe(struct platform_device *pdev)
>  		if (ret) {
>  			dev_err(data->dev, "pm_runtime_set_active: %d\n", ret);
>  			iio_device_unregister(indio_dev);
> +			return ret;
>  		}
>  
>  		pm_runtime_enable(data->dev);