Hi Dinghao, Thanks for the patch. Indeed, this should be fixed. Overall, there are several other calls to pm_runtime_get_sync within this driver, would you like to fix them all at once ? On Thu, May 21, 2020 at 03:05:07PM +0800, Dinghao Liu wrote: > pm_runtime_get_sync() increments the runtime PM usage counter even > the call returns an error code. Thus a pairing decrement is needed > on the error handling path to keep the counter balanced. > > Signed-off-by: Dinghao Liu <dinghao.liu@xxxxxxxxxx> > --- > drivers/i2c/busses/i2c-stm32f7.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c > index 330ffed011e0..602cf35649c8 100644 > --- a/drivers/i2c/busses/i2c-stm32f7.c > +++ b/drivers/i2c/busses/i2c-stm32f7.c > @@ -1767,8 +1767,10 @@ static int stm32f7_i2c_reg_slave(struct i2c_client *slave) > return ret; > > ret = pm_runtime_get_sync(dev); > - if (ret < 0) > + if (ret < 0) { > + pm_runtime_put_autosuspend(dev); Considering that if we fail here there is a very good chance that this is due to the resume failing, pm_runtime_put_noidle would probably make more sense since pm_runtime_put_autosuspend will most probably fail as well. > return ret; > + } > > if (!stm32f7_i2c_is_slave_registered(i2c_dev)) > stm32f7_i2c_enable_wakeup(i2c_dev, true); > -- > 2.17.1 >