[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230510143537.145060-1-n.zhandarovich@fintech.ru>
Date: Wed, 10 May 2023 07:35:37 -0700
From: Nikita Zhandarovich <n.zhandarovich@...tech.ru>
To: Jean Delvare <jdelvare@...e.com>
CC: Nikita Zhandarovich <n.zhandarovich@...tech.ru>,
Guenter Roeck <linux@...ck-us.net>,
Uwe Kleine-König
<u.kleine-koenig@...gutronix.de>, <linux-hwmon@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <lvc-project@...uxtesting.org>
Subject: [PATCH] hwmon: (f71882fg) prevent possible division by zero
In the unlikely event that something goes wrong with the device and
its registers, the fan_from_reg() function may return 0. This value
will cause a division-by-zero error in the show_pwm() function.
To prevent this, test the value of
fan_from_reg(data->fan_full_speed[nr]) against 0 before performing
the division. If the division-by-zero error is avoided, assign 0 to
the val variable.
Found by Linux Verification Center (linuxtesting.org) with static
analysis tool SVACE.
Fixes: df9ec2dae094 ("hwmon: (f71882fg) Reorder symbols to get rid of a few forward declarations")
Signed-off-by: Nikita Zhandarovich <n.zhandarovich@...tech.ru>
---
drivers/hwmon/f71882fg.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c
index 70121482a617..27207ec6f7fe 100644
--- a/drivers/hwmon/f71882fg.c
+++ b/drivers/hwmon/f71882fg.c
@@ -1096,8 +1096,11 @@ static ssize_t show_pwm(struct device *dev,
val = data->pwm[nr];
else {
/* RPM mode */
- val = 255 * fan_from_reg(data->fan_target[nr])
- / fan_from_reg(data->fan_full_speed[nr]);
+ if (fan_from_reg(data->fan_full_speed[nr]))
+ val = 255 * fan_from_reg(data->fan_target[nr])
+ / fan_from_reg(data->fan_full_speed[nr]);
+ else
+ val = 0;
}
mutex_unlock(&data->update_lock);
return sprintf(buf, "%d\n", val);
--
2.25.1
Powered by blists - more mailing lists