| From d21179a7684e126309caa463e0e15a5f12ba7781 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 11 May 2020 13:02:19 +0200 |
| Subject: hwmon: (da9052) Synchronize access with mfd |
| |
| From: Samu Nuutamo <samu.nuutamo@vincit.fi> |
| |
| [ Upstream commit 333e22db228f0bd0c839553015a6a8d3db4ba569 ] |
| |
| When tsi-as-adc is configured it is possible for in7[0123]_input read to |
| return an incorrect value if a concurrent read to in[456]_input is |
| performed. This is caused by a concurrent manipulation of the mux |
| channel without proper locking as hwmon and mfd use different locks for |
| synchronization. |
| |
| Switch hwmon to use the same lock as mfd when accessing the TSI channel. |
| |
| Fixes: 4f16cab19a3d5 ("hwmon: da9052: Add support for TSI channel") |
| Signed-off-by: Samu Nuutamo <samu.nuutamo@vincit.fi> |
| [rebase to current master, reword commit message slightly] |
| Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> |
| Signed-off-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/hwmon/da9052-hwmon.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/hwmon/da9052-hwmon.c b/drivers/hwmon/da9052-hwmon.c |
| index 53b517dbe7e6e..4af2fc309c286 100644 |
| --- a/drivers/hwmon/da9052-hwmon.c |
| +++ b/drivers/hwmon/da9052-hwmon.c |
| @@ -244,9 +244,9 @@ static ssize_t da9052_tsi_show(struct device *dev, |
| int channel = to_sensor_dev_attr(devattr)->index; |
| int ret; |
| |
| - mutex_lock(&hwmon->hwmon_lock); |
| + mutex_lock(&hwmon->da9052->auxadc_lock); |
| ret = __da9052_read_tsi(dev, channel); |
| - mutex_unlock(&hwmon->hwmon_lock); |
| + mutex_unlock(&hwmon->da9052->auxadc_lock); |
| |
| if (ret < 0) |
| return ret; |
| -- |
| 2.20.1 |
| |