diff options
| author | Kurt Roeckx <kurt@roeckx.be> | 2009-09-16 11:09:32 -0400 |
|---|---|---|
| committer | Dave Jones <davej@redhat.com> | 2009-09-16 11:18:55 -0400 |
| commit | f0adb134d8dc9993a9998dc50845ec4f6ff4fadc (patch) | |
| tree | e709b5a0bc21ced0ac07fb9839c4c99cdd3bc7e5 | |
| parent | 1a8e42fa81e62d47cc471f7764f906bb42b27a54 (diff) | |
[CPUFREQ] Fix NULL ptr regression in powernow-k8
Fixes bugzilla #13780
From: Kurt Roeckx <kurt@roeckx.be>
Signed-off-by: Dave Jones <davej@redhat.com>
| -rw-r--r-- | arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index 0cbce0481a54..6394aa5c7985 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | |||
| @@ -605,9 +605,10 @@ static int check_pst_table(struct powernow_k8_data *data, struct pst_s *pst, | |||
| 605 | return 0; | 605 | return 0; |
| 606 | } | 606 | } |
| 607 | 607 | ||
| 608 | static void invalidate_entry(struct powernow_k8_data *data, unsigned int entry) | 608 | static void invalidate_entry(struct cpufreq_frequency_table *powernow_table, |
| 609 | unsigned int entry) | ||
| 609 | { | 610 | { |
| 610 | data->powernow_table[entry].frequency = CPUFREQ_ENTRY_INVALID; | 611 | powernow_table[entry].frequency = CPUFREQ_ENTRY_INVALID; |
| 611 | } | 612 | } |
| 612 | 613 | ||
| 613 | static void print_basics(struct powernow_k8_data *data) | 614 | static void print_basics(struct powernow_k8_data *data) |
| @@ -915,13 +916,13 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data, | |||
| 915 | "bad value %d.\n", i, index); | 916 | "bad value %d.\n", i, index); |
| 916 | printk(KERN_ERR PFX "Please report to BIOS " | 917 | printk(KERN_ERR PFX "Please report to BIOS " |
| 917 | "manufacturer\n"); | 918 | "manufacturer\n"); |
| 918 | invalidate_entry(data, i); | 919 | invalidate_entry(powernow_table, i); |
| 919 | continue; | 920 | continue; |
| 920 | } | 921 | } |
| 921 | rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi); | 922 | rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi); |
| 922 | if (!(hi & HW_PSTATE_VALID_MASK)) { | 923 | if (!(hi & HW_PSTATE_VALID_MASK)) { |
| 923 | dprintk("invalid pstate %d, ignoring\n", index); | 924 | dprintk("invalid pstate %d, ignoring\n", index); |
| 924 | invalidate_entry(data, i); | 925 | invalidate_entry(powernow_table, i); |
| 925 | continue; | 926 | continue; |
| 926 | } | 927 | } |
| 927 | 928 | ||
| @@ -970,7 +971,7 @@ static int fill_powernow_table_fidvid(struct powernow_k8_data *data, | |||
| 970 | /* verify frequency is OK */ | 971 | /* verify frequency is OK */ |
| 971 | if ((freq > (MAX_FREQ * 1000)) || (freq < (MIN_FREQ * 1000))) { | 972 | if ((freq > (MAX_FREQ * 1000)) || (freq < (MIN_FREQ * 1000))) { |
| 972 | dprintk("invalid freq %u kHz, ignoring\n", freq); | 973 | dprintk("invalid freq %u kHz, ignoring\n", freq); |
| 973 | invalidate_entry(data, i); | 974 | invalidate_entry(powernow_table, i); |
| 974 | continue; | 975 | continue; |
| 975 | } | 976 | } |
| 976 | 977 | ||
| @@ -978,7 +979,7 @@ static int fill_powernow_table_fidvid(struct powernow_k8_data *data, | |||
| 978 | * BIOSs are using "off" to indicate invalid */ | 979 | * BIOSs are using "off" to indicate invalid */ |
| 979 | if (vid == VID_OFF) { | 980 | if (vid == VID_OFF) { |
| 980 | dprintk("invalid vid %u, ignoring\n", vid); | 981 | dprintk("invalid vid %u, ignoring\n", vid); |
| 981 | invalidate_entry(data, i); | 982 | invalidate_entry(powernow_table, i); |
| 982 | continue; | 983 | continue; |
| 983 | } | 984 | } |
| 984 | 985 | ||
| @@ -988,7 +989,7 @@ static int fill_powernow_table_fidvid(struct powernow_k8_data *data, | |||
| 988 | (unsigned int) | 989 | (unsigned int) |
| 989 | (data->acpi_data.states[i].core_frequency | 990 | (data->acpi_data.states[i].core_frequency |
| 990 | * 1000)); | 991 | * 1000)); |
| 991 | invalidate_entry(data, i); | 992 | invalidate_entry(powernow_table, i); |
| 992 | continue; | 993 | continue; |
| 993 | } | 994 | } |
| 994 | } | 995 | } |
