On Sun, Jun 14, 2020 at 1:17 AM <wu000273@xxxxxxx> wrote: > > From: Qiushi Wu <wu000273@xxxxxxx> > > pm_runtime_get_sync() increments the runtime PM usage counter even > when it returns an error code. Thus call pm_runtime_put_noidle() > if pm_runtime_get_sync() fails. > FWIW, Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > Signed-off-by: Qiushi Wu <wu000273@xxxxxxx> > --- > drivers/i2c/busses/i2c-img-scb.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c > index 98a89301ed2a..e13ca862fa97 100644 > --- a/drivers/i2c/busses/i2c-img-scb.c > +++ b/drivers/i2c/busses/i2c-img-scb.c > @@ -1058,8 +1058,10 @@ static int img_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, > } > > ret = pm_runtime_get_sync(adap->dev.parent); > - if (ret < 0) > + if (ret < 0) { > + pm_runtime_put_noidle(adap->dev.parent); > return ret; > + } > > for (i = 0; i < num; i++) { > struct i2c_msg *msg = &msgs[i]; > @@ -1159,8 +1161,10 @@ static int img_i2c_init(struct img_i2c *i2c) > int ret; > > ret = pm_runtime_get_sync(i2c->adap.dev.parent); > - if (ret < 0) > + if (ret < 0) { > + pm_runtime_put_noidle(i2c->adap.dev.parent); > return ret; > + } > > rev = img_i2c_readl(i2c, SCB_CORE_REV_REG); > if ((rev & 0x00ffffff) < 0x00020200) { > -- > 2.17.1 > -- With Best Regards, Andy Shevchenko