Em Sun, 9 May 2021 12:33:29 +0100 Jonathan Cameron <jic23@xxxxxxxxxx> escreveu: > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > Error paths in read_raw() and write_raw() callbacks failed to perform and > type of runtime pm put(). Remove called pm_runtime_put_noidle() > but there is no equivalent get (this is safe because the reference > count is protected against going below zero, but it is misleading. > > Whilst here use pm_runtime_resume_and_get() to replace boilerplate. > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > Cc: Brian Masney <masneyb@xxxxxxxxxxxxx> LGTM. Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> > --- > drivers/iio/light/tsl2583.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/drivers/iio/light/tsl2583.c b/drivers/iio/light/tsl2583.c > index 0f787bfc88fc..1f4ad4047a86 100644 > --- a/drivers/iio/light/tsl2583.c > +++ b/drivers/iio/light/tsl2583.c > @@ -636,9 +636,7 @@ static int tsl2583_set_pm_runtime_busy(struct tsl2583_chip *chip, bool on) > int ret; > > if (on) { > - ret = pm_runtime_get_sync(&chip->client->dev); > - if (ret < 0) > - pm_runtime_put_noidle(&chip->client->dev); > + ret = pm_runtime_resume_and_get(&chip->client->dev); > } else { > pm_runtime_mark_last_busy(&chip->client->dev); > ret = pm_runtime_put_autosuspend(&chip->client->dev); > @@ -721,8 +719,10 @@ static int tsl2583_read_raw(struct iio_dev *indio_dev, > read_done: > mutex_unlock(&chip->als_mutex); > > - if (ret < 0) > + if (ret < 0) { > + tsl2583_set_pm_runtime_busy(chip, false); > return ret; > + } > > /* > * Preserve the ret variable if the call to > @@ -783,8 +783,10 @@ static int tsl2583_write_raw(struct iio_dev *indio_dev, > > mutex_unlock(&chip->als_mutex); > > - if (ret < 0) > + if (ret < 0) { > + tsl2583_set_pm_runtime_busy(chip, false); > return ret; > + } > > ret = tsl2583_set_pm_runtime_busy(chip, false); > if (ret < 0) > @@ -872,7 +874,6 @@ static int tsl2583_remove(struct i2c_client *client) > > pm_runtime_disable(&client->dev); > pm_runtime_set_suspended(&client->dev); > - pm_runtime_put_noidle(&client->dev); > > return tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_OFF); > } Thanks, Mauro