diff options
author | Venki Pallipadi <venkatesh.pallipadi@intel.com> | 2007-03-26 15:03:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-27 11:55:56 -0400 |
commit | ec28297a562f2b022115b9eb82e4ea724d996240 (patch) | |
tree | 37443cab75290b45b65b491f6dd56882fad38dec | |
parent | 703071b5b93d88d5acb0edd5b9dd86c69ad970f2 (diff) |
[PATCH] Fix maxcpus=1 trigerring BUG() in cpufreq
Ingo reported it on lkml in the thread
"2.6.21-rc5: maxcpus=1 crash in cpufreq: kernel BUG at drivers/cpufreq/cpufreq.c:82!"
This check added to remove_dev is symmetric to one in add_dev and handles
callbacks for offline cpus cleanly.
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index f52facc570f5..3162010900c9 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -1015,6 +1015,10 @@ static int cpufreq_remove_dev (struct sys_device * sys_dev) | |||
1015 | { | 1015 | { |
1016 | unsigned int cpu = sys_dev->id; | 1016 | unsigned int cpu = sys_dev->id; |
1017 | int retval; | 1017 | int retval; |
1018 | |||
1019 | if (cpu_is_offline(cpu)) | ||
1020 | return 0; | ||
1021 | |||
1018 | if (unlikely(lock_policy_rwsem_write(cpu))) | 1022 | if (unlikely(lock_policy_rwsem_write(cpu))) |
1019 | BUG(); | 1023 | BUG(); |
1020 | 1024 | ||