Skip to content

Commit

Permalink
iio: gyro: fxa21002c: Balance runtime pm + use pm_runtime_resume_and_…
Browse files Browse the repository at this point in the history
…get().

[ Upstream commit 41120eb ]

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@inria.fr/

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Rui Miguel Silva <rui.silva@linaro.org>
Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/20210509113354.660190-2-jic23@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
jic23 authored and gregkh committed Jul 20, 2021
1 parent 5f69841 commit 5ecb0ac
Showing 1 changed file with 1 addition and 10 deletions.
11 changes: 1 addition & 10 deletions drivers/iio/gyro/fxas21002c_core.c
Expand Up @@ -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)
Expand Down Expand Up @@ -1005,7 +998,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;
}
Expand All @@ -1019,7 +1011,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);

Expand Down

0 comments on commit 5ecb0ac

Please sign in to comment.