diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 8a0356531fb66ece3d4b134aa638bc6884c5ac10..e66e33cb948b6cf2c2936d7cf6976aa1d8064fb1 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c @@ -660,11 +660,14 @@ void __global_cli(void) void __global_sti(void) { - int cpu = smp_processor_id(); + int cpu; + preempt_disable(); + cpu = smp_processor_id(); if (! local_irq_count(cpu)) release_irqlock(cpu); __sti(); + preempt_enable(); } unsigned long __global_save_flags(void)