diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2015-08-03 08:36:16 +0530 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-09-01 15:50:39 +0200 |
commit | 14ca0bdfdd6b422027b9b733abb0bf151811eaa7 (patch) | |
tree | b5907d54cb1fbd3de8a747e0d0edc75ba7ea1a1a /drivers | |
parent | 8fa5b631f32238a16ae3db0db5b354f7b9eb20cb (diff) | |
download | lwn-14ca0bdfdd6b422027b9b733abb0bf151811eaa7.tar.gz lwn-14ca0bdfdd6b422027b9b733abb0bf151811eaa7.zip |
cpufreq: update user_policy.* on success
'user_policy' caches properties of a policy that are set by userspace.
And these must be updated only if cpufreq core was successful in
updating them based on request from user space.
In store_scaling_governor(), we are updating user_policy.policy and
user_policy.governor even if cpufreq_set_policy() failed. That's
incorrect.
Fix this by updating user_policy.* only if we were successful in
updating the properties.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 86d69416821b..8e71d8e08439 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -671,14 +671,12 @@ static ssize_t store_scaling_governor(struct cpufreq_policy *policy, return -EINVAL; ret = cpufreq_set_policy(policy, &new_policy); + if (ret) + return ret; policy->user_policy.policy = policy->policy; policy->user_policy.governor = policy->governor; - - if (ret) - return ret; - else - return count; + return count; } /** |