Em Sun, 9 May 2021 12:33:27 +0100 Jonathan Cameron <jic23@xxxxxxxxxx> escreveu: > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > In both the probe() error path and remove() pm_runtime_put_noidle() > is called which will decrement the runtime pm reference count. > However, there is no matching function to have raised the reference count. > Not this isn't a fix as the runtime pm core will stop the reference count > going negative anyway. > > An alternative would have been to raise the count in these paths, but > it is not clear why that would be necessary. > > Whilst we are here replace some boilerplate with pm_runtime_resume_and_get() > Found using coccicheck script under review at: > https://lore.kernel.org/lkml/20210427141946.2478411-1-Julia.Lawall@xxxxxxxx/ > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > Cc: Rui Miguel Silva <rui.silva@xxxxxxxxxx> LGTM. Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> > --- > drivers/iio/gyro/fxas21002c_core.c | 11 +---------- > 1 file changed, 1 insertion(+), 10 deletions(-) > > diff --git a/drivers/iio/gyro/fxas21002c_core.c b/drivers/iio/gyro/fxas21002c_core.c > index 5af7b48ff01a..539585b0d300 100644 > --- a/drivers/iio/gyro/fxas21002c_core.c > +++ b/drivers/iio/gyro/fxas21002c_core.c > @@ -366,14 +366,7 @@ static int fxas21002c_write(struct fxas21002c_data *data, > > static int fxas21002c_pm_get(struct fxas21002c_data *data) > { > - struct device *dev = regmap_get_device(data->regmap); > - int ret; > - > - ret = pm_runtime_get_sync(dev); > - if (ret < 0) > - pm_runtime_put_noidle(dev); > - > - return ret; > + return pm_runtime_resume_and_get(regmap_get_device(data->regmap)); > } > > static int fxas21002c_pm_put(struct fxas21002c_data *data) > @@ -1002,7 +995,6 @@ int fxas21002c_core_probe(struct device *dev, struct regmap *regmap, int irq, > pm_disable: > pm_runtime_disable(dev); > pm_runtime_set_suspended(dev); > - pm_runtime_put_noidle(dev); > > return ret; > } > @@ -1016,7 +1008,6 @@ void fxas21002c_core_remove(struct device *dev) > > pm_runtime_disable(dev); > pm_runtime_set_suspended(dev); > - pm_runtime_put_noidle(dev); > } > EXPORT_SYMBOL_GPL(fxas21002c_core_remove); > Thanks, Mauro