i2c: imx: Fix PM reference leak in i2c_imx_reg_slave()
authorYe Weihua <yeweihua4@huawei.com>
Thu, 8 Apr 2021 11:06:38 +0000 (19:06 +0800)
committerWolfram Sang <wsa@kernel.org>
Wed, 14 Apr 2021 08:04:23 +0000 (10:04 +0200)
pm_runtime_get_sync() will increment the PM reference count even on
failure. Forgetting to put the reference again will result in a leak.

Replace it with pm_runtime_resume_and_get() to keep the usage counter
balanced.

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Ye Weihua <yeweihua4@huawei.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-imx.c

index dc9c4b4..dc5ca71 100644 (file)
@@ -801,7 +801,7 @@ static int i2c_imx_reg_slave(struct i2c_client *client)
        i2c_imx->last_slave_event = I2C_SLAVE_STOP;
 
        /* Resume */
-       ret = pm_runtime_get_sync(i2c_imx->adapter.dev.parent);
+       ret = pm_runtime_resume_and_get(i2c_imx->adapter.dev.parent);
        if (ret < 0) {
                dev_err(&i2c_imx->adapter.dev, "failed to resume i2c controller");
                return ret;