hwmon: (it87) Ensure that pwm control cache is current before updating values
If sensor attributes were never read, the pwm control data has not been initiialized, which can cause wrong driver behavior. Ensure that cached data is current before acting on it. Cc: stable@vger.kernel.org # 4.4+ Reported-by: Kevin Folz <kfolz@evertz.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
638c1c07f9
commit
82dbe987b7
|
@ -1360,6 +1360,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&data->update_lock);
|
mutex_lock(&data->update_lock);
|
||||||
|
it87_update_pwm_ctrl(data, nr);
|
||||||
if (has_newer_autopwm(data)) {
|
if (has_newer_autopwm(data)) {
|
||||||
/*
|
/*
|
||||||
* If we are in automatic mode, the PWM duty cycle register
|
* If we are in automatic mode, the PWM duty cycle register
|
||||||
|
@ -1472,6 +1473,7 @@ static ssize_t set_pwm_temp_map(struct device *dev,
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&data->update_lock);
|
mutex_lock(&data->update_lock);
|
||||||
|
it87_update_pwm_ctrl(data, nr);
|
||||||
data->pwm_temp_map[nr] = reg;
|
data->pwm_temp_map[nr] = reg;
|
||||||
/*
|
/*
|
||||||
* If we are in automatic mode, write the temp mapping immediately;
|
* If we are in automatic mode, write the temp mapping immediately;
|
||||||
|
|
Loading…
Reference in New Issue