summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/cpufreq_ondemand.c
diff options
context:
space:
mode:
authorNagananda.Chumbalkar@hp.com <Nagananda.Chumbalkar@hp.com>2009-12-21 23:40:52 +0100
committerDave Jones <davej@redhat.com>2010-01-13 16:55:16 +0100
commit1dbf58881f307e21a3df4b990a5bea401360d02e (patch)
treea79f9d4373c88a5451569f56d6b99952e982e832 /drivers/cpufreq/cpufreq_ondemand.c
parent[CPUFREQ] Fix use after free of struct powernow_k8_data (diff)
downloadlinux-1dbf58881f307e21a3df4b990a5bea401360d02e.tar.xz
linux-1dbf58881f307e21a3df4b990a5bea401360d02e.zip
[CPUFREQ] Fix ondemand to not request targets outside policy limits
Dominik said: target_freq cannot be below policy->min or above policy->max. If it were, the whole cpufreq subsystem is broken. But (answer): I think the "ondemand" governor can ask for a target frequency that is below policy->min. ... A patch such as below may be needed to sanitize the target frequency requested by "ondemand". The "conservative" governor already has this check: Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Dave Jones <davej@redhat.com> # diff -bur x/drivers/cpufreq/cpufreq_ondemand.c.orig y/drivers/cpufreq/cpufreq_ondemand.c
Diffstat (limited to 'drivers/cpufreq/cpufreq_ondemand.c')
-rw-r--r--drivers/cpufreq/cpufreq_ondemand.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
index 4b34ade2332b..bd444dc93cf2 100644
--- a/drivers/cpufreq/cpufreq_ondemand.c
+++ b/drivers/cpufreq/cpufreq_ondemand.c
@@ -554,6 +554,9 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
(dbs_tuners_ins.up_threshold -
dbs_tuners_ins.down_differential);
+ if (freq_next < policy->min)
+ freq_next = policy->min;
+
if (!dbs_tuners_ins.powersave_bias) {
__cpufreq_driver_target(policy, freq_next,
CPUFREQ_RELATION_L);