cpufreq/amd-pstate: Fix cpufreq_policy ref counting
authorDhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Wed, 5 Feb 2025 11:25:20 +0000 (11:25 +0000)
committerMario Limonciello <mario.limonciello@amd.com>
Thu, 6 Feb 2025 19:19:36 +0000 (13:19 -0600)
amd_pstate_update_limits() takes a cpufreq_policy reference but doesn't
decrement the refcount in one of the exit paths, fix that.

Fixes: 45722e777fd9 ("cpufreq: amd-pstate: Optimize amd_pstate_update_limits()")
Signed-off-by: Dhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20250205112523.201101-10-dhananjay.ugwekar@amd.com
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
drivers/cpufreq/amd-pstate.c

index 9dc3933bc3261ca192d42bc6c467251a765b197a..313550fa62d41e42b0de370c9c9e32d4f26f2bef 100644 (file)
@@ -821,20 +821,21 @@ static void amd_pstate_init_prefcore(struct amd_cpudata *cpudata)
 
 static void amd_pstate_update_limits(unsigned int cpu)
 {
-       struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
+       struct cpufreq_policy *policy = NULL;
        struct amd_cpudata *cpudata;
        u32 prev_high = 0, cur_high = 0;
        int ret;
        bool highest_perf_changed = false;
 
+       if (!amd_pstate_prefcore)
+               return;
+
+       policy = cpufreq_cpu_get(cpu);
        if (!policy)
                return;
 
        cpudata = policy->driver_data;
 
-       if (!amd_pstate_prefcore)
-               return;
-
        guard(mutex)(&amd_pstate_driver_lock);
 
        ret = amd_get_highest_perf(cpu, &cur_high);