提交 05313350 编写于 作者: T Thara Gopinath 提交者: Xie XiuQi

thermal: Fix locking in cooling device sysfs update cur_state

[ Upstream commit 68000a0d983f539c95ebe5dccd4f29535c7ac0af ]

Sysfs interface to update cooling device cur_state does not
currently holding cooling device lock sometimes leading to
stale values in cur_state if getting updated simultanelously
from user space and thermal framework. Adding the proper locking
code fixes this issue.
Signed-off-by: NThara Gopinath <thara.gopinath@linaro.org>
Signed-off-by: NZhang Rui <rui.zhang@intel.com>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 79c36837
...@@ -712,11 +712,14 @@ cur_state_store(struct device *dev, struct device_attribute *attr, ...@@ -712,11 +712,14 @@ cur_state_store(struct device *dev, struct device_attribute *attr,
if ((long)state < 0) if ((long)state < 0)
return -EINVAL; return -EINVAL;
mutex_lock(&cdev->lock);
result = cdev->ops->set_cur_state(cdev, state); result = cdev->ops->set_cur_state(cdev, state);
if (result) if (!result)
return result; thermal_cooling_device_stats_update(cdev, state);
thermal_cooling_device_stats_update(cdev, state);
return count; mutex_unlock(&cdev->lock);
return result ? result : count;
} }
static struct device_attribute static struct device_attribute
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册