On Wed, Sep 3, 2025 at 3:18 PM Zihuan Zhang <zhangzih...@kylinos.cn> wrote: > > Replace the manual cpufreq_cpu_put() with __free(put_cpufreq_policy) > annotation for policy references. This reduces the risk of reference > counting mistakes and aligns the code with the latest kernel style. > > No functional change intended. > > Signed-off-by: Zihuan Zhang <zhangzih...@kylinos.cn> > --- > drivers/acpi/processor_thermal.c | 37 ++++++++++++++++++-------------- > 1 file changed, 21 insertions(+), 16 deletions(-) > > diff --git a/drivers/acpi/processor_thermal.c > b/drivers/acpi/processor_thermal.c > index 1219adb11ab9..5043f17d27b7 100644 > --- a/drivers/acpi/processor_thermal.c > +++ b/drivers/acpi/processor_thermal.c > @@ -62,19 +62,14 @@ static int phys_package_first_cpu(int cpu) > return 0; > } > > -static int cpu_has_cpufreq(unsigned int cpu) > +static bool cpu_has_cpufreq(unsigned int cpu) > { > - struct cpufreq_policy *policy; > + struct cpufreq_policy *policy __free(put_cpufreq_policy) = > cpufreq_cpu_get(cpu); > > if (!acpi_processor_cpufreq_init) > return 0; > > - policy = cpufreq_cpu_get(cpu); > - if (policy) { > - cpufreq_cpu_put(policy); > - return 1; > - } > - return 0; > + return !!policy; > } > > static int cpufreq_get_max_state(unsigned int cpu) > @@ -93,9 +88,23 @@ static int cpufreq_get_cur_state(unsigned int cpu) > return reduction_step(cpu); > } > > +static long long cpufreq_get_max_freq(unsigned int cpu) > +{ > + long long max_freq; > + struct cpufreq_policy *policy __free(put_cpufreq_policy) = > + cpufreq_cpu_get(cpu); > + > + if (!policy) > + return -EINVAL; > + > + max_freq = (policy->cpuinfo.max_freq * > + (100 - reduction_step(cpu) * cpufreq_thermal_reduction_pctg)) > / 100; > + > + return max_freq; > +} > + > static int cpufreq_set_cur_state(unsigned int cpu, int state) > { > - struct cpufreq_policy *policy; > struct acpi_processor *pr; > unsigned long max_freq; > int i, ret; > @@ -120,14 +129,10 @@ static int cpufreq_set_cur_state(unsigned int cpu, int > state) > if (unlikely(!freq_qos_request_active(&pr->thermal_req))) > continue; > > - policy = cpufreq_cpu_get(i); > - if (!policy) > - return -EINVAL; > - > - max_freq = (policy->cpuinfo.max_freq * > - (100 - reduction_step(i) * > cpufreq_thermal_reduction_pctg)) / 100; > + max_freq = cpufreq_get_max_freq(cpu); > > - cpufreq_cpu_put(policy); > + if (max_freq == -EINVAL) > + return -EINVAL;
Please also move the code below to the new function so it does not need to return a value. > > ret = freq_qos_update_request(&pr->thermal_req, max_freq); > if (ret < 0) { > --