Commit 91bb8f45 authored by Guenter Roeck's avatar Guenter Roeck

hwmon: (nct6775) Fix loop limit

Commit cc66b303 ("hwmon: (nct6775) Rework temperature source and label
handling") changed a loop limit from "data->temp_label_num - 1" to "32",
as part of moving from a string array to a bit mask. This results in the
following error, reported by UBSAN.

UBSAN: Undefined behaviour in drivers/hwmon/nct6775.c:4179:27
shift exponent 32 is too large for 32-bit type 'long unsigned int'

Similar to the original loop, the limit has to be one less than the
number of bits.

Fixes: cc66b303 ("hwmon: (nct6775) Rework temperature source and label handling")
Reported-by: default avatarPaul Menzel <pmenzel+linux-hwmon@molgen.mpg.de>
Cc: Paul Menzel <pmenzel+linux-hwmon@molgen.mpg.de>
Tested-by: default avatarPaul Menzel <pmenzel+linux-hwmon@molgen.mpg.de>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 536e0019
...@@ -4175,7 +4175,7 @@ static int nct6775_probe(struct platform_device *pdev) ...@@ -4175,7 +4175,7 @@ static int nct6775_probe(struct platform_device *pdev)
* The temperature is already monitored if the respective bit in <mask> * The temperature is already monitored if the respective bit in <mask>
* is set. * is set.
*/ */
for (i = 0; i < 32; i++) { for (i = 0; i < 31; i++) {
if (!(data->temp_mask & BIT(i + 1))) if (!(data->temp_mask & BIT(i + 1)))
continue; continue;
if (!reg_temp_alternate[i]) if (!reg_temp_alternate[i])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment