lkml.org 
[lkml]   [2020]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v9 02/32] i2c: tegra: Add missing pm_runtime_put()
    Date
    The pm_runtime_get_sync() always bumps refcount regardless of whether it
    succeeds or fails. Hence driver is responsible for restoring of the RPM
    refcounting. This patch adds missing RPM puts which restore refcounting
    in a case of pm_runtime_get_sync() error.

    Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: Thierry Reding <treding@nvidia.com>
    Tested-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    ---
    drivers/i2c/busses/i2c-tegra.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
    index ab88cdd70376..4e7d0eec0dd3 100644
    --- a/drivers/i2c/busses/i2c-tegra.c
    +++ b/drivers/i2c/busses/i2c-tegra.c
    @@ -1375,6 +1375,7 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
    ret = pm_runtime_get_sync(i2c_dev->dev);
    if (ret < 0) {
    dev_err(i2c_dev->dev, "runtime resume failed %d\n", ret);
    + pm_runtime_put_noidle(i2c_dev->dev);
    return ret;
    }

    @@ -1786,7 +1787,7 @@ static int tegra_i2c_probe(struct platform_device *pdev)
    ret = pm_runtime_get_sync(i2c_dev->dev);
    if (ret < 0) {
    dev_err(&pdev->dev, "runtime resume failed\n");
    - goto disable_rpm;
    + goto put_rpm;
    }
    }

    @@ -1851,7 +1852,6 @@ static int tegra_i2c_probe(struct platform_device *pdev)
    else
    tegra_i2c_runtime_suspend(&pdev->dev);

    -disable_rpm:
    if (pm_runtime_enabled(&pdev->dev))
    pm_runtime_disable(&pdev->dev);

    --
    2.27.0
    \
     
     \ /
      Last update: 2020-09-30 00:21    [W:3.758 / U:0.416 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site