]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
cpufreq: Use __free() for policy reference counting cleanup
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 28 Mar 2025 20:46:22 +0000 (21:46 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 9 Apr 2025 19:22:14 +0000 (21:22 +0200)
Use __free() for policy reference counting cleanup where applicable in
the cpufreq core.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Link: https://patch.msgid.link/9437968.CDJkKcVGEf@rjwysocki.net
drivers/cpufreq/cpufreq.c

index 2ed873777fb5e2db699dbbd8cdf97180694a1bfc..29130aa1b09a1f2c2bd499d72c3efcc200dda74a 100644 (file)
@@ -1818,27 +1818,26 @@ static unsigned int cpufreq_verify_current_freq(struct cpufreq_policy *policy, b
  */
 unsigned int cpufreq_quick_get(unsigned int cpu)
 {
-       struct cpufreq_policy *policy;
-       unsigned int ret_freq = 0;
+       struct cpufreq_policy *policy __free(put_cpufreq_policy) = NULL;
        unsigned long flags;
 
        read_lock_irqsave(&cpufreq_driver_lock, flags);
 
        if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get) {
-               ret_freq = cpufreq_driver->get(cpu);
+               unsigned int ret_freq = cpufreq_driver->get(cpu);
+
                read_unlock_irqrestore(&cpufreq_driver_lock, flags);
+
                return ret_freq;
        }
 
        read_unlock_irqrestore(&cpufreq_driver_lock, flags);
 
        policy = cpufreq_cpu_get(cpu);
-       if (policy) {
-               ret_freq = policy->cur;
-               cpufreq_cpu_put(policy);
-       }
+       if (policy)
+               return policy->cur;
 
-       return ret_freq;
+       return 0;
 }
 EXPORT_SYMBOL(cpufreq_quick_get);
 
@@ -1850,15 +1849,13 @@ EXPORT_SYMBOL(cpufreq_quick_get);
  */
 unsigned int cpufreq_quick_get_max(unsigned int cpu)
 {
-       struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
-       unsigned int ret_freq = 0;
+       struct cpufreq_policy *policy __free(put_cpufreq_policy);
 
-       if (policy) {
-               ret_freq = policy->max;
-               cpufreq_cpu_put(policy);
-       }
+       policy = cpufreq_cpu_get(cpu);
+       if (policy)
+               return policy->max;
 
-       return ret_freq;
+       return 0;
 }
 EXPORT_SYMBOL(cpufreq_quick_get_max);
 
@@ -1870,15 +1867,13 @@ EXPORT_SYMBOL(cpufreq_quick_get_max);
  */
 __weak unsigned int cpufreq_get_hw_max_freq(unsigned int cpu)
 {
-       struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
-       unsigned int ret_freq = 0;
+       struct cpufreq_policy *policy __free(put_cpufreq_policy);
 
-       if (policy) {
-               ret_freq = policy->cpuinfo.max_freq;
-               cpufreq_cpu_put(policy);
-       }
+       policy = cpufreq_cpu_get(cpu);
+       if (policy)
+               return policy->cpuinfo.max_freq;
 
-       return ret_freq;
+       return 0;
 }
 EXPORT_SYMBOL(cpufreq_get_hw_max_freq);
 
@@ -1898,20 +1893,18 @@ static unsigned int __cpufreq_get(struct cpufreq_policy *policy)
  */
 unsigned int cpufreq_get(unsigned int cpu)
 {
-       struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
-       unsigned int ret_freq = 0;
+       struct cpufreq_policy *policy __free(put_cpufreq_policy);
 
+       policy = cpufreq_cpu_get(cpu);
        if (!policy)
                return 0;
 
-       scoped_guard(cpufreq_policy_read, policy) {
-               if (cpufreq_driver->get)
-                       ret_freq = __cpufreq_get(policy);
-       }
+       guard(cpufreq_policy_read)(policy);
 
-       cpufreq_cpu_put(policy);
+       if (cpufreq_driver->get)
+               return __cpufreq_get(policy);
 
-       return ret_freq;
+       return 0;
 }
 EXPORT_SYMBOL(cpufreq_get);
 
@@ -2566,7 +2559,8 @@ EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
  */
 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
 {
-       struct cpufreq_policy *cpu_policy;
+       struct cpufreq_policy *cpu_policy __free(put_cpufreq_policy);
+
        if (!policy)
                return -EINVAL;
 
@@ -2576,7 +2570,6 @@ int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
 
        memcpy(policy, cpu_policy, sizeof(*policy));
 
-       cpufreq_cpu_put(cpu_policy);
        return 0;
 }
 EXPORT_SYMBOL(cpufreq_get_policy);