2023-01-25 12:18:01

by Rafael J. Wysocki

[permalink] [raw]
Subject: [PATCH v1] thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type()

From: Rafael J. Wysocki <[email protected]>

In order to prevent int340x_thermal_get_trip_type() from possibly
racing with int340x_thermal_read_trips() invoked by int3403_notify()
add locking to it in analogy with int340x_thermal_get_trip_temp().

Fixes: 6757a7abe47b ("thermal: intel: int340x: Protect trip temperature from concurrent updates")
Signed-off-by: Rafael J. Wysocki <[email protected]>
---

On top of the linux-next branch in linux-pm.git from today.

---
drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

Index: linux-pm/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c
===================================================================
--- linux-pm.orig/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c
+++ linux-pm/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c
@@ -75,7 +75,9 @@ static int int340x_thermal_get_trip_type
enum thermal_trip_type *type)
{
struct int34x_thermal_zone *d = zone->devdata;
- int i;
+ int i, ret = 0;
+
+ mutex_lock(&d->trip_mutex);

if (trip < d->aux_trip_nr)
*type = THERMAL_TRIP_PASSIVE;
@@ -94,10 +96,12 @@ static int int340x_thermal_get_trip_type
}
}
if (i == INT340X_THERMAL_MAX_ACT_TRIP_COUNT)
- return -EINVAL;
+ ret = -EINVAL;
}

- return 0;
+ mutex_unlock(&d->trip_mutex);
+
+ return ret;
}

static int int340x_thermal_set_trip_temp(struct thermal_zone_device *zone,