|
@@ -1467,20 +1467,22 @@ int cpufreq_driver_target(struct cpufreq_policy *policy,
|
|
|
unsigned int target_freq,
|
|
|
unsigned int relation)
|
|
|
{
|
|
|
- int ret;
|
|
|
+ int ret = -EINVAL;
|
|
|
|
|
|
policy = cpufreq_cpu_get(policy->cpu);
|
|
|
if (!policy)
|
|
|
- return -EINVAL;
|
|
|
+ goto no_policy;
|
|
|
|
|
|
if (unlikely(lock_policy_rwsem_write(policy->cpu)))
|
|
|
- return -EINVAL;
|
|
|
+ goto fail;
|
|
|
|
|
|
ret = __cpufreq_driver_target(policy, target_freq, relation);
|
|
|
|
|
|
unlock_policy_rwsem_write(policy->cpu);
|
|
|
|
|
|
+fail:
|
|
|
cpufreq_cpu_put(policy);
|
|
|
+no_policy:
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(cpufreq_driver_target);
|
|
@@ -1717,13 +1719,17 @@ int cpufreq_update_policy(unsigned int cpu)
|
|
|
{
|
|
|
struct cpufreq_policy *data = cpufreq_cpu_get(cpu);
|
|
|
struct cpufreq_policy policy;
|
|
|
- int ret = 0;
|
|
|
+ int ret;
|
|
|
|
|
|
- if (!data)
|
|
|
- return -ENODEV;
|
|
|
+ if (!data) {
|
|
|
+ ret = -ENODEV;
|
|
|
+ goto no_policy;
|
|
|
+ }
|
|
|
|
|
|
- if (unlikely(lock_policy_rwsem_write(cpu)))
|
|
|
- return -EINVAL;
|
|
|
+ if (unlikely(lock_policy_rwsem_write(cpu))) {
|
|
|
+ ret = -EINVAL;
|
|
|
+ goto fail;
|
|
|
+ }
|
|
|
|
|
|
dprintk("updating policy for CPU %u\n", cpu);
|
|
|
memcpy(&policy, data, sizeof(struct cpufreq_policy));
|
|
@@ -1750,7 +1756,9 @@ int cpufreq_update_policy(unsigned int cpu)
|
|
|
|
|
|
unlock_policy_rwsem_write(cpu);
|
|
|
|
|
|
+fail:
|
|
|
cpufreq_cpu_put(data);
|
|
|
+no_policy:
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(cpufreq_update_policy);
|