diff --git a/kernel/softirq.c b/kernel/softirq.c index 501baa9ac1be3ac37b1a7f7e1204aea2d5456971..c497fcdf0d1e672230a7bd941a4b6de9c22b6204 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -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();