diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-03-19 12:48:30 +0100 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-03-19 12:48:30 +0100 |
commit | 9832235f3f880ab2e58141885e3b5ed3b158c0fb (patch) | |
tree | 03234656eee774bb7467b2ba15c6877689b324b8 | |
parent | 8f3ba3d3257be80636ed15cc221d6a2efb6a6e82 (diff) | |
download | linux-stable-9832235f3f880ab2e58141885e3b5ed3b158c0fb.tar.gz linux-stable-9832235f3f880ab2e58141885e3b5ed3b158c0fb.tar.bz2 linux-stable-9832235f3f880ab2e58141885e3b5ed3b158c0fb.zip |
cpufreq: Do not allow ->setpolicy drivers to provide ->target
cpufreq drivers that provide the ->setpolicy() callback are supposed
to have integrated governors, so they don't need to set ->target()
or ->target_index() and may confuse the core if any of these callbacks
is present.
For this reason, add a check preventing ->setpolicy cpufreq drivers
from registering if they have non-NULL ->target or ->target_index.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 2677ff1c0a2c..24cd6ff9bb0b 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -2299,7 +2299,9 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) if (!driver_data || !driver_data->verify || !driver_data->init || !(driver_data->setpolicy || driver_data->target_index || - driver_data->target)) + driver_data->target) || + (driver_data->setpolicy && (driver_data->target_index || + driver_data->target))) return -EINVAL; pr_debug("trying to register driver %s\n", driver_data->name); |