diff options
author | Lukasz Luba <lukasz.luba@arm.com> | 2020-08-11 11:17:27 +0100 |
---|---|---|
committer | Krzysztof Kozlowski <krzk@kernel.org> | 2020-08-17 13:54:14 +0200 |
commit | 7f7d9e1e02f0e18275449489425058b639c970dc (patch) | |
tree | 1361cfccc6bb10f4e8004e5227b7d8f36e886784 /drivers/memory | |
parent | 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5 (diff) | |
download | linux-7f7d9e1e02f0e18275449489425058b639c970dc.tar.gz linux-7f7d9e1e02f0e18275449489425058b639c970dc.tar.bz2 linux-7f7d9e1e02f0e18275449489425058b639c970dc.zip |
memory: samsung: exynos5422-dmc: Additional locking for 'curr_rate'
The 'curr_rate' is protected by local 'dmc->lock' in various places, but
not in a function exynos5_dmc_get_status(). The lock protects frequency
(and voltage) change process and the corresponding value stored in
'curr_rate'. Add the locking mechanism to protect the 'curr_rate' reading
also in the exynos5_dmc_get_status().
Suggested-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Link: https://lore.kernel.org/r/20200811101727.3976-1-lukasz.luba@arm.com
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Diffstat (limited to 'drivers/memory')
-rw-r--r-- | drivers/memory/samsung/exynos5422-dmc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/memory/samsung/exynos5422-dmc.c b/drivers/memory/samsung/exynos5422-dmc.c index b9c7956e5031..952bc61e68f4 100644 --- a/drivers/memory/samsung/exynos5422-dmc.c +++ b/drivers/memory/samsung/exynos5422-dmc.c @@ -908,7 +908,10 @@ static int exynos5_dmc_get_status(struct device *dev, int ret; if (dmc->in_irq_mode) { + mutex_lock(&dmc->lock); stat->current_frequency = dmc->curr_rate; + mutex_unlock(&dmc->lock); + stat->busy_time = dmc->load; stat->total_time = dmc->total; } else { |