hwmon: (it87) Ensure that pwm control cache is current before updating values
authorGuenter Roeck <linux@roeck-us.net>
Wed, 8 Feb 2017 22:02:59 +0000 (14:02 -0800)
committerGuenter Roeck <linux@roeck-us.net>
Sat, 11 Feb 2017 05:35:08 +0000 (21:35 -0800)
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>
drivers/hwmon/it87.c

index 11a28b233006c10a8d6abf222166b40024224b43..85918d8a747a5890a125ee85664f9134c8cf97bb 100644 (file)
@@ -1360,6 +1360,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
                return -EINVAL;
 
        mutex_lock(&data->update_lock);
+       it87_update_pwm_ctrl(data, nr);
        if (has_newer_autopwm(data)) {
                /*
                 * 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);
+       it87_update_pwm_ctrl(data, nr);
        data->pwm_temp_map[nr] = reg;
        /*
         * If we are in automatic mode, write the temp mapping immediately;