powernow: implement struct cpufreq_driver.verify
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 5 Dec 2008 15:22:21 +0000 (15:22 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 5 Dec 2008 15:22:21 +0000 (15:22 +0000)
Without this, under rare conditions hypervisor crashes are possible
due to this method being called without checking against NULL.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
xen/arch/x86/acpi/cpufreq/powernow.c

index b43de6a5cfe27a00668df1a2796cda9335cc80da..f69b425a0cea9e437b439136f49e0a7e36520a5e 100644 (file)
@@ -129,6 +129,16 @@ static int powernow_cpufreq_target(struct cpufreq_policy *policy,
     return result;
 }
 
+static int powernow_cpufreq_verify(struct cpufreq_policy *policy)
+{
+    struct powernow_cpufreq_data *data;
+
+    if (!policy || !(data = drv_data[policy->cpu]))
+        return -EINVAL;
+
+    return cpufreq_frequency_table_verify(policy, data->freq_table);
+}
+
 static int powernow_cpufreq_cpu_init(struct cpufreq_policy *policy)
 {
     unsigned int i;
@@ -243,6 +253,7 @@ static int powernow_cpufreq_cpu_exit(struct cpufreq_policy *policy)
 }
 
 static struct cpufreq_driver powernow_cpufreq_driver = {
+    .verify = powernow_cpufreq_verify,
     .target = powernow_cpufreq_target,
     .init   = powernow_cpufreq_cpu_init,
     .exit   = powernow_cpufreq_cpu_exit