thermal/core/fair share: Lock the thermal zone while looping over instances
[platform/kernel/linux-starfive.git] / drivers / thermal / gov_fair_share.c
index aaa0718..645432c 100644 (file)
@@ -82,6 +82,8 @@ static int fair_share_throttle(struct thermal_zone_device *tz, int trip)
        int total_instance = 0;
        int cur_trip_level = get_trip_level(tz);
 
+       mutex_lock(&tz->lock);
+
        list_for_each_entry(instance, &tz->thermal_instances, tz_node) {
                if (instance->trip != trip)
                        continue;
@@ -110,6 +112,8 @@ static int fair_share_throttle(struct thermal_zone_device *tz, int trip)
                mutex_unlock(&instance->cdev->lock);
                thermal_cdev_update(cdev);
        }
+
+       mutex_unlock(&tz->lock);
        return 0;
 }