| From 32e50df64f9cf555d10e7246c1cfca1755b58956 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 7 Apr 2021 11:49:27 +0800 |
| Subject: iio: light: gp2ap002: Fix rumtime PM imbalance on error |
| |
| From: Dinghao Liu <dinghao.liu@zju.edu.cn> |
| |
| [ Upstream commit 8edb79af88efc6e49e735f9baf61d9f0748b881f ] |
| |
| When devm_request_threaded_irq() fails, we should decrease the |
| runtime PM counter to keep the counter balanced. But when |
| iio_device_register() fails, we need not to decrease it because |
| we have already decreased it before. |
| |
| Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> |
| Reviewed-by: Linus Walleij <linus.walleij@linaro.org> |
| Fixes: 97d642e23037 ("iio: light: Add a driver for Sharp GP2AP002x00F") |
| Link: https://lore.kernel.org/r/20210407034927.16882-1-dinghao.liu@zju.edu.cn |
| Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/iio/light/gp2ap002.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/iio/light/gp2ap002.c b/drivers/iio/light/gp2ap002.c |
| index 7ba7aa59437c..040d8429a6e0 100644 |
| --- a/drivers/iio/light/gp2ap002.c |
| +++ b/drivers/iio/light/gp2ap002.c |
| @@ -583,7 +583,7 @@ static int gp2ap002_probe(struct i2c_client *client, |
| "gp2ap002", indio_dev); |
| if (ret) { |
| dev_err(dev, "unable to request IRQ\n"); |
| - goto out_disable_vio; |
| + goto out_put_pm; |
| } |
| gp2ap002->irq = client->irq; |
| |
| @@ -613,8 +613,9 @@ static int gp2ap002_probe(struct i2c_client *client, |
| |
| return 0; |
| |
| -out_disable_pm: |
| +out_put_pm: |
| pm_runtime_put_noidle(dev); |
| +out_disable_pm: |
| pm_runtime_disable(dev); |
| out_disable_vio: |
| regulator_disable(gp2ap002->vio); |
| -- |
| 2.30.2 |
| |