--- x/kernel/softirq.c +++ y/kernel/softirq.c @@ -956,7 +956,6 @@ static void tasklet_action_common(struct tl_head->tail = &tl_head->head; local_irq_enable(); - tasklet_lock_callback(); while (list) { struct tasklet_struct *t = list; @@ -976,7 +975,6 @@ static void tasklet_action_common(struct } } tasklet_unlock(t); - tasklet_callback_sync_wait_running(); continue; } tasklet_unlock(t); @@ -989,7 +987,6 @@ static void tasklet_action_common(struct __raise_softirq_irqoff(softirq_nr); local_irq_enable(); } - tasklet_unlock_callback(); } static __latent_entropy void tasklet_action(void) @@ -1042,7 +1039,7 @@ void tasklet_unlock_spin_wait(struct tas * interrupt processing or prevents ksoftirqd from * running. */ - tasklet_callback_cancel_wait_running(); + tasklet_unlock_wait(t); } else { cpu_relax(); }