]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cpufreq: Exit governor when failed to start old governor
authorLifeng Zheng <zhenglifeng1@huawei.com>
Wed, 9 Jul 2025 10:41:45 +0000 (18:41 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:40:58 +0000 (18:40 +0200)
[ Upstream commit 0ae204405095abfbc2d694ee0fbb49bcbbe55c57 ]

Detect the result of starting old governor in cpufreq_set_policy(). If it
fails, exit the governor and clear policy->governor.

Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
Link: https://patch.msgid.link/20250709104145.2348017-5-zhenglifeng1@huawei.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/cpufreq/cpufreq.c

index c1c6f11ac551bb9e7349b3941f7e6fd332791666..628f5b633b61fe324f2cd7844c8d6f090e07c063 100644 (file)
@@ -2716,10 +2716,12 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,
        pr_debug("starting governor %s failed\n", policy->governor->name);
        if (old_gov) {
                policy->governor = old_gov;
-               if (cpufreq_init_governor(policy))
+               if (cpufreq_init_governor(policy)) {
                        policy->governor = NULL;
-               else
-                       cpufreq_start_governor(policy);
+               } else if (cpufreq_start_governor(policy)) {
+                       cpufreq_exit_governor(policy);
+                       policy->governor = NULL;
+               }
        }
 
        return ret;