Unverified Commit 8247b7f0 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!4819 v2 fix CVE-2020-36782

Merge Pull Request from: @ci-robot 
 
PR sync from: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/X5NRAZSHVZXQAMCABOLGJAI4SGBLMINJ/ 
v1->v2: update bugzilla

Qinglang Miao (1):
  i2c: imx-lpi2c: fix reference leak when pm_runtime_get_sync fails

Zhang Qilong (1):
  PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter


-- 
2.34.1
 
https://gitee.com/src-openeuler/kernel/issues/I94JCT 
 
Link:https://gitee.com/openeuler/kernel/pulls/4819

 

Reviewed-by: default avatarYu Kuai <yukuai3@huawei.com>
Reviewed-by: default avatarZhang Changzhong <zhangchangzhong@huawei.com>
Signed-off-by: default avatarZhang Changzhong <zhangchangzhong@huawei.com>
parents 44c6f76a 3d833890
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -265,7 +265,7 @@ static int lpi2c_imx_master_enable(struct lpi2c_imx_struct *lpi2c_imx)
	unsigned int temp;
	int ret;

	ret = pm_runtime_get_sync(lpi2c_imx->adapter.dev.parent);
	ret = pm_runtime_resume_and_get(lpi2c_imx->adapter.dev.parent);
	if (ret < 0)
		return ret;

+21 −0
Original line number Diff line number Diff line
@@ -225,6 +225,27 @@ static inline int pm_runtime_get_sync(struct device *dev)
	return __pm_runtime_resume(dev, RPM_GET_PUT);
}

/**
 * pm_runtime_resume_and_get - Bump up usage counter of a device and resume it.
 * @dev: Target device.
 *
 * Resume @dev synchronously and if that is successful, increment its runtime
 * PM usage counter. Return 0 if the runtime PM usage counter of @dev has been
 * incremented or a negative error code otherwise.
 */
static inline int pm_runtime_resume_and_get(struct device *dev)
{
	int ret;

	ret = __pm_runtime_resume(dev, RPM_GET_PUT);
	if (ret < 0) {
		pm_runtime_put_noidle(dev);
		return ret;
	}

	return 0;
}

static inline int pm_runtime_put(struct device *dev)
{
	return __pm_runtime_idle(dev, RPM_GET_PUT | RPM_ASYNC);