Skip to content

Commit 834556d

Browse files
committed
Fan: fix code review issues
Add validation to prevent division by zero. The linear interpolation at line 185 computes (temp - targetTemperature) / (maxSpeedTemperature - targetTemperature). If maxSpeedTemperature == targetTemperature, this results in division by zero.
1 parent 44f96de commit 834556d

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

usermods/PWM_fan/PWM_fan.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ class PWMFanUsermod : public Usermod {
170170
int pwmMaxValue = maxPWMValuePct * _pwmMaxValue / 100;
171171

172172
if (pwmMaxValue <= pwmMinValue) {
173-
updateFanSpeed(_pwmMaxValue); // fail safe: run at max speed
173+
updateFanSpeed(_pwmMaxValue); // fail safe: invalid config, run at max speed
174174
return;
175175
}
176176

@@ -182,6 +182,10 @@ class PWMFanUsermod : public Usermod {
182182
} else if(temp > maxSpeedTemperature) {
183183
updateFanSpeed(pwmMaxValue);
184184
} else {
185+
if (maxSpeedTemperature <= targetTemperature) {
186+
updateFanSpeed(pwmMaxValue); // fail safe: invalid config, run at max speed
187+
return;
188+
}
185189
float speedFactor = (temp - targetTemperature) / (maxSpeedTemperature - targetTemperature); // 0 - 1
186190
updateFanSpeed(speedFactor * pwmRange + pwmMinValue);
187191
}

0 commit comments

Comments
 (0)