Re: [PATCH 08/28] iio: hid: trigger: Balance runtime pm + use pm_runtime_resume_and_get()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Sun,  9 May 2021 12:33:34 +0100
Jonathan Cameron <jic23@xxxxxxxxxx> escreveu:

> From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
> 
> The call to pm_runtime_put_noidle() in remove() callback is not
> balanced by any gets
> 
> Note this doesn't cause any problems beyond reader confusion as the runtime
> pm core protects against the reference counter going negative.
> 
> Whilst here, use pm_runtiem_resume_and_get() to simplify code a little.
> 
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
> Cc: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>

RPM get/put logic LGTM.

Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>

> ---
>  drivers/iio/common/hid-sensors/hid-sensor-trigger.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> index 5a7b3e253e58..c06537e106e9 100644
> --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> @@ -163,18 +163,15 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state)
>  
>  	if (state) {
>  		atomic_inc(&st->user_requested_state);
> -		ret = pm_runtime_get_sync(&st->pdev->dev);
> +		ret = pm_runtime_resume_and_get(&st->pdev->dev);
>  	} else {
>  		atomic_dec(&st->user_requested_state);
>  		pm_runtime_mark_last_busy(&st->pdev->dev);
>  		pm_runtime_use_autosuspend(&st->pdev->dev);
>  		ret = pm_runtime_put_autosuspend(&st->pdev->dev);
>  	}
> -	if (ret < 0) {
> -		if (state)
> -			pm_runtime_put_noidle(&st->pdev->dev);
> +	if (ret < 0)
>  		return ret;
> -	}
>  
>  	return 0;
>  #else
> @@ -222,7 +219,6 @@ void hid_sensor_remove_trigger(struct iio_dev *indio_dev,
>  		pm_runtime_disable(&attrb->pdev->dev);
>  
>  	pm_runtime_set_suspended(&attrb->pdev->dev);
> -	pm_runtime_put_noidle(&attrb->pdev->dev);
>  
>  	cancel_work_sync(&attrb->work);
>  	iio_trigger_unregister(attrb->trigger);



Thanks,
Mauro



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux