ksoftirqd: Enable IRQs and call cond_resched() before poking RCU
[linux-2.6-block.git] / kernel / softirq.c
index 501baa9ac1be3ac37b1a7f7e1204aea2d5456971..c497fcdf0d1e672230a7bd941a4b6de9c22b6204 100644 (file)
@@ -656,9 +656,13 @@ static void run_ksoftirqd(unsigned int cpu)
                 * in the task stack here.
                 */
                __do_softirq();
-               rcu_note_context_switch();
                local_irq_enable();
                cond_resched();
+
+               preempt_disable();
+               rcu_note_context_switch();
+               preempt_enable();
+
                return;
        }
        local_irq_enable();