]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 May 2021 08:29:32 +0000 (10:29 +0200)
[ Upstream commit c4b1fcc310e655fa8414696c38a84d36c00684c8 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i2c/busses/i2c-imx.c

index 8a694b2eebfdbcf8a1afba6511ab118f4d9a7585..d6b3fdf09b8f0a2973eb3157b70a6de28cc800f1 100644 (file)
@@ -763,7 +763,7 @@ static int i2c_imx_reg_slave(struct i2c_client *client)
        i2c_imx->slave = client;
 
        /* 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;