From: Greg Kroah-Hartman Date: Mon, 17 May 2021 10:32:15 +0000 (+0200) Subject: 4.9-stable patches X-Git-Tag: v5.4.120~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0151cddb985c3a172cf9223f5b00f00157f00c74;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: thermal-core-fair-share-lock-the-thermal-zone-while-looping-over-instances.patch --- diff --git a/queue-4.9/series b/queue-4.9/series index 9d01d8a65b9..07c48c77d6a 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -216,3 +216,4 @@ fddi-defxx-make-mmio-the-configuration-default-except-for-eisa.patch mips-reinstate-platform-__div64_32-handler.patch mips-avoid-divu-in-__div64_32-is-result-would-be-zero.patch mips-avoid-handcoded-divu-in-__div64_32-altogether.patch +thermal-core-fair-share-lock-the-thermal-zone-while-looping-over-instances.patch diff --git a/queue-4.9/thermal-core-fair-share-lock-the-thermal-zone-while-looping-over-instances.patch b/queue-4.9/thermal-core-fair-share-lock-the-thermal-zone-while-looping-over-instances.patch new file mode 100644 index 00000000000..793d2e07fdb --- /dev/null +++ b/queue-4.9/thermal-core-fair-share-lock-the-thermal-zone-while-looping-over-instances.patch @@ -0,0 +1,42 @@ +From fef05776eb02238dcad8d5514e666a42572c3f32 Mon Sep 17 00:00:00 2001 +From: Lukasz Luba +Date: Thu, 22 Apr 2021 16:36:22 +0100 +Subject: thermal/core/fair share: Lock the thermal zone while looping over instances + +From: Lukasz Luba + +commit fef05776eb02238dcad8d5514e666a42572c3f32 upstream. + +The tz->lock must be hold during the looping over the instances in that +thermal zone. This lock was missing in the governor code since the +beginning, so it's hard to point into a particular commit. + +CC: stable@vger.kernel.org # 4.4+ +Signed-off-by: Lukasz Luba +Signed-off-by: Daniel Lezcano +Link: https://lore.kernel.org/r/20210422153624.6074-2-lukasz.luba@arm.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/thermal/fair_share.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/thermal/fair_share.c ++++ b/drivers/thermal/fair_share.c +@@ -93,6 +93,8 @@ static int fair_share_throttle(struct th + 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; +@@ -121,6 +123,8 @@ static int fair_share_throttle(struct th + mutex_unlock(&instance->cdev->lock); + thermal_cdev_update(cdev); + } ++ ++ mutex_unlock(&tz->lock); + return 0; + } +