diff --git a/kernel/softirq.c b/kernel/softirq.c
index 590049c17dc818620018185dc1b290b9633c4b09..2ce0962e5929614dff4427c0c5fd77f4367f0ce2 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -1033,10 +1033,10 @@ sleep_more:
 				goto sleep_more;
 			}
 			per_cpu(softirq_running, cpu) |= softirq_mask;
-			__preempt_enable_no_resched();
 			set_softirq_pending(local_softirq_pending() & ~softirq_mask);
 			local_bh_disable();
 			local_irq_enable();
+			preempt_enable();
 
 			h = &softirq_vec[data->nr];
 			if (h)