Prechádzať zdrojové kódy

[PATCH] 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.

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>
Jacob Shin 19 rokov pred
rodič
commit
4211a30349
1 zmenil súbory, kde vykonal 10 pridanie a 1 odobranie
  1. 10 1
      arch/i386/kernel/cpu/cpufreq/powernow-k8.c

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