From: Greg Kroah-Hartman Date: Thu, 9 Nov 2023 10:14:37 +0000 (+0100) Subject: 6.6-stable patches X-Git-Tag: v4.14.330~72 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6406cef1144240805e6bbe0d98d55a90265be835;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: hwmon-nct6775-fix-incorrect-variable-reuse-in-fan_div-calculation.patch series --- diff --git a/queue-6.6/hwmon-nct6775-fix-incorrect-variable-reuse-in-fan_div-calculation.patch b/queue-6.6/hwmon-nct6775-fix-incorrect-variable-reuse-in-fan_div-calculation.patch new file mode 100644 index 00000000000..394425c0a4a --- /dev/null +++ b/queue-6.6/hwmon-nct6775-fix-incorrect-variable-reuse-in-fan_div-calculation.patch @@ -0,0 +1,63 @@ +From 920057ad521dc8669e534736c2a12c14ec9fb2d7 Mon Sep 17 00:00:00 2001 +From: Zev Weiss +Date: Fri, 29 Sep 2023 13:08:23 -0700 +Subject: hwmon: (nct6775) Fix incorrect variable reuse in fan_div calculation + +From: Zev Weiss + +commit 920057ad521dc8669e534736c2a12c14ec9fb2d7 upstream. + +In the regmap conversion in commit 4ef2774511dc ("hwmon: (nct6775) +Convert register access to regmap API") I reused the 'reg' variable +for all three register reads in the fan speed calculation loop in +nct6775_update_device(), but failed to notice that the value from the +first one (data->REG_FAN[i]) is actually used in the call to +nct6775_select_fan_div() at the end of the loop body. Since that +patch the register value passed to nct6775_select_fan_div() has been +(conditionally) incorrectly clobbered with the value of a different +register than intended, which has in at least some cases resulted in +fan speeds being adjusted down to zero. + +Fix this by using dedicated temporaries for the two intermediate +register reads instead of 'reg'. + +Signed-off-by: Zev Weiss +Fixes: 4ef2774511dc ("hwmon: (nct6775) Convert register access to regmap API") +Reported-by: Thomas Zajic +Tested-by: Thomas Zajic +Cc: stable@vger.kernel.org # v5.19+ +Link: https://lore.kernel.org/r/20230929200822.964-2-zev@bewilderbeest.net +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman +--- + drivers/hwmon/nct6775-core.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +--- a/drivers/hwmon/nct6775-core.c ++++ b/drivers/hwmon/nct6775-core.c +@@ -1614,17 +1614,21 @@ struct nct6775_data *nct6775_update_devi + data->fan_div[i]); + + if (data->has_fan_min & BIT(i)) { +- err = nct6775_read_value(data, data->REG_FAN_MIN[i], ®); ++ u16 tmp; ++ ++ err = nct6775_read_value(data, data->REG_FAN_MIN[i], &tmp); + if (err) + goto out; +- data->fan_min[i] = reg; ++ data->fan_min[i] = tmp; + } + + if (data->REG_FAN_PULSES[i]) { +- err = nct6775_read_value(data, data->REG_FAN_PULSES[i], ®); ++ u16 tmp; ++ ++ err = nct6775_read_value(data, data->REG_FAN_PULSES[i], &tmp); + if (err) + goto out; +- data->fan_pulses[i] = (reg >> data->FAN_PULSE_SHIFT[i]) & 0x03; ++ data->fan_pulses[i] = (tmp >> data->FAN_PULSE_SHIFT[i]) & 0x03; + } + + err = nct6775_select_fan_div(dev, data, i, reg); diff --git a/queue-6.6/series b/queue-6.6/series new file mode 100644 index 00000000000..a13f33e1ae6 --- /dev/null +++ b/queue-6.6/series @@ -0,0 +1 @@ +hwmon-nct6775-fix-incorrect-variable-reuse-in-fan_div-calculation.patch