[PATCH] x86_64: Proper null pointer check in powernow_k8_get
authorJacob Shin <jacob.shin@amd.com>
Fri, 7 Apr 2006 17:49:51 +0000 (19:49 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 9 Apr 2006 18:53:51 +0000 (11:53 -0700)
This prevents crashes on dual core system when enough ticks are lost.

Replaces earlier patch by me.

Cc: Dave Jones <davej@redhat.com>
Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/kernel/cpu/cpufreq/powernow-k8.c

index 6ba497c..7c0e160 100644 (file)
@@ -46,7 +46,7 @@
 
 #define PFX "powernow-k8: "
 #define BFX PFX "BIOS error: "
-#define VERSION "version 1.60.1"
+#define VERSION "version 1.60.2"
 #include "powernow-k8.h"
 
 /* serialize freq changes  */
@@ -910,6 +910,9 @@ static int powernowk8_target(struct cpufreq_policy *pol, unsigned targfreq, unsi
        unsigned int newstate;
        int ret = -EIO;
 
+       if (!data)
+               return -EINVAL;
+
        /* only run on specific CPU from here on */
        oldmask = current->cpus_allowed;
        set_cpus_allowed(current, cpumask_of_cpu(pol->cpu));
@@ -969,6 +972,9 @@ static int powernowk8_verify(struct cpufreq_policy *pol)
 {
        struct powernow_k8_data *data = powernow_data[pol->cpu];
 
+       if (!data)
+               return -EINVAL;
+
        return cpufreq_frequency_table_verify(pol, data->powernow_table);
 }
 
@@ -1100,6 +1106,9 @@ static unsigned int powernowk8_get (unsigned int cpu)
 
        data = powernow_data[first_cpu(cpu_core_map[cpu])];
 
+       if (!data)
+               return -EINVAL;
+
        if (!data)
                return -EINVAL;