User: | Jiri Slaby |
Error type: | Leaving function in locked state |
Error type description: | Some lock is not unlocked on all paths of a function, so it is leaked |
File location: | arch/x86/kernel/smpboot.c |
Line in file: | 1415 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Stanse
(1.2)
|
Entered: | 2012-05-21 20:30:05 UTC |
1385 unsigned int i; 1386 1387 for (i = 0; i < 10; i++) { 1388 /* They ack this in play_dead by setting CPU_DEAD */ 1389 if (per_cpu(cpu_state, cpu) == CPU_DEAD) { 1390 printk(KERN_INFO "CPU %d is now offline\n", cpu); 1391 if (1 == num_online_cpus()) 1392 alternatives_smp_switch(0); 1393 return; 1394 } 1395 msleep(100); 1396 } 1397 printk(KERN_ERR "CPU %u didn't die...\n", cpu); 1398} 1399 1400void play_dead_common(void) 1401{ 1402 idle_task_exit(); 1403 reset_lazy_tlbstate(); 1404 irq_ctx_exit(raw_smp_processor_id()); 1405 c1e_remove_cpu(raw_smp_processor_id()); 1406 1407 mb(); 1408 /* Ack it */ 1409 __get_cpu_var(cpu_state) = CPU_DEAD; 1410 1411 /* 1412 * With physical CPU hotplug, we should halt the cpu 1413 */ 1414 local_irq_disable(); 1415} 1416 1417void native_play_dead(void) 1418{ 1419 play_dead_common(); 1420 wbinvd_halt(); 1421} 1422 1423#else /* ... !CONFIG_HOTPLUG_CPU */ 1424int native_cpu_disable(void) 1425{