Browse Source

[CPUFREQ] x86_64: Proper null pointer check in powernow_k8_get

This prevents crashes on dual core system when enough ticks are lost.

Replaces earlier patch by me.

(Duplicate null data check in powernowk8_get() removed -- davej)

 arch/i386/kernel/cpu/cpufreq/powernow-k8.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Dave Jones <davej@redhat.com>
jacob.shin@amd.com 19 years ago
parent
commit
530515a06f
1 changed files with 7 additions and 1 deletions
  1. 7 1
      arch/i386/kernel/cpu/cpufreq/powernow-k8.c

+ 7 - 1
arch/i386/kernel/cpu/cpufreq/powernow-k8.c

@@ -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);
 }