浏览代码

[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>
Venki Pallipadi 18 年之前
父节点
当前提交
ec28297a56
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      drivers/cpufreq/cpufreq.c

+ 4 - 0
drivers/cpufreq/cpufreq.c

@@ -1015,6 +1015,10 @@ static int cpufreq_remove_dev (struct sys_device * sys_dev)
 {
 {
 	unsigned int cpu = sys_dev->id;
 	unsigned int cpu = sys_dev->id;
 	int retval;
 	int retval;
+
+	if (cpu_is_offline(cpu))
+		return 0;
+
 	if (unlikely(lock_policy_rwsem_write(cpu)))
 	if (unlikely(lock_policy_rwsem_write(cpu)))
 		BUG();
 		BUG();