Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[platform/kernel/linux-starfive.git] / drivers / thermal / thermal_sysfs.c
index 2241cea..aa99edb 100644 (file)
@@ -712,11 +712,14 @@ cur_state_store(struct device *dev, struct device_attribute *attr,
        if ((long)state < 0)
                return -EINVAL;
 
+       mutex_lock(&cdev->lock);
+
        result = cdev->ops->set_cur_state(cdev, state);
-       if (result)
-               return result;
-       thermal_cooling_device_stats_update(cdev, state);
-       return count;
+       if (!result)
+               thermal_cooling_device_stats_update(cdev, state);
+
+       mutex_unlock(&cdev->lock);
+       return result ? result : count;
 }
 
 static struct device_attribute