mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
cpufreq: Fix policy initialization for internal governor drivers
commit f5739cb0b56590d68d8df8a44659893b6d0084c3 upstream.
Before commit 1e4f63aecb53 ("cpufreq: Avoid creating excessively
large stack frames") the initial value of the policy field in struct
cpufreq_policy set by the driver's ->init() callback was implicitly
passed from cpufreq_init_policy() to cpufreq_set_policy() if the
default governor was neither "performance" nor "powersave". After
that commit, however, cpufreq_init_policy() must take that case into
consideration explicitly and handle it as appropriate, so make that
happen.
Fixes: 1e4f63aecb53 ("cpufreq: Avoid creating excessively large stack frames")
Link: https://lore.kernel.org/linux-pm/[email protected]/
Reported-by: Artem Bityutskiy <[email protected]>
Cc: 5.4+ <[email protected]> # 5.4+
Signed-off-by: Rafael J. Wysocki <[email protected]>
Acked-by: Viresh Kumar <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
386a71f635
commit
9629f47d7d
1 changed files with 10 additions and 2 deletions
|
|
@ -1071,9 +1071,17 @@ static int cpufreq_init_policy(struct cpufreq_policy *policy)
|
|||
pol = policy->last_policy;
|
||||
} else if (def_gov) {
|
||||
pol = cpufreq_parse_policy(def_gov->name);
|
||||
} else {
|
||||
return -ENODATA;
|
||||
/*
|
||||
* In case the default governor is neiter "performance"
|
||||
* nor "powersave", fall back to the initial policy
|
||||
* value set by the driver.
|
||||
*/
|
||||
if (pol == CPUFREQ_POLICY_UNKNOWN)
|
||||
pol = policy->policy;
|
||||
}
|
||||
if (pol != CPUFREQ_POLICY_PERFORMANCE &&
|
||||
pol != CPUFREQ_POLICY_POWERSAVE)
|
||||
return -ENODATA;
|
||||
}
|
||||
|
||||
return cpufreq_set_policy(policy, gov, pol);
|
||||
|
|
|
|||
Loading…
Reference in a new issue