소스 검색

[PATCH] setup_boot_APIC_clock() irq-enable fix

latest -git triggers an irqtrace/lockdep warning of a leaked
irqs-off condition:

  BUG: at kernel/fork.c:1033 copy_process()

after some debugging it turns out that commit ca1b940c accidentally left
interrupts disabled - which trickled down all the way to the first time
we fork a kernel thread and triggered the warning.

the fix is to re-enable interrupts in the 'else' branch of
setup_boot_APIC_clock()'s pmtimers calibration path.

Reported-by: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Thomas Gleixner <tglx@brown.paperbag.linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Ingo Molnar 18 년 전
부모
커밋
4edc5db83f
1개의 변경된 파일2개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 1
      arch/i386/kernel/apic.c

+ 2 - 1
arch/i386/kernel/apic.c

@@ -506,7 +506,8 @@ void __init setup_boot_APIC_clock(void)
 			apic_printk(APIC_VERBOSE, "... jiffies result ok\n");
 			apic_printk(APIC_VERBOSE, "... jiffies result ok\n");
 		else
 		else
 			local_apic_timer_verify_ok = 0;
 			local_apic_timer_verify_ok = 0;
-	}
+	} else
+		local_irq_enable();
 
 
 	if (!local_apic_timer_verify_ok) {
 	if (!local_apic_timer_verify_ok) {
 		printk(KERN_WARNING
 		printk(KERN_WARNING