[V2,06/13] thermal/drivers/hisi: Remove pointless lock

Message ID 1504554972-2624-6-git-send-email-daniel.lezcano@linaro.org
State New
Headers show
Series
  • [V2,01/13] thermal/drivers/hisi: Fix missing interrupt enablement
Related show

Commit Message

Daniel Lezcano Sept. 4, 2017, 7:56 p.m.
The threaded interrupt inspect the sensors structure to look in the temp
threshold field, but this field is read-only in all the code, except in the
probe function before the threaded interrupt is set. In other words there
is not race window in the threaded interrupt when reading the field value.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

Reviewed-by: Leo Yan <leo.yan@linaro.org>

---
 drivers/thermal/hisi_thermal.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

-- 
2.7.4

Comments

Daniel Lezcano Sept. 8, 2017, 9:31 a.m. | #1
On 08/09/2017 05:16, Eduardo Valentin wrote:
> On Mon, Sep 04, 2017 at 09:56:05PM +0200, Daniel Lezcano wrote:

>> The threaded interrupt inspect the sensors structure to look in the temp

>> threshold field, but this field is read-only in all the code, except in the

>> probe function before the threaded interrupt is set. In other words there

>> is not race window in the threaded interrupt when reading the field value.

> 

> 

> Sure? Not even if you have a userspace process read the zone temp via

> sysfs and the polling workqueue reading the temp too?


They are both read-only operations. There is no write-read race.


-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

Patch

diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c
index f523197..9ec5f29 100644
--- a/drivers/thermal/hisi_thermal.c
+++ b/drivers/thermal/hisi_thermal.c
@@ -221,14 +221,10 @@  static irqreturn_t hisi_thermal_alarm_irq(int irq, void *dev)
 static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev)
 {
 	struct hisi_thermal_data *data = dev;
-	struct hisi_thermal_sensor *sensor;
-
-	mutex_lock(&data->thermal_lock);
-	sensor = &data->sensors;
+	struct hisi_thermal_sensor *sensor = &data->sensors;
 
 	dev_crit(&data->pdev->dev, "THERMAL ALARM: T > %d\n",
 		 sensor->thres_temp);
-	mutex_unlock(&data->thermal_lock);
 
 	thermal_zone_device_update(data->sensors.tzd,
 				   THERMAL_EVENT_UNSPECIFIED);