diff -urN 2.4.0-test4-pre6/kernel/softirq.c vm-25/kernel/softirq.c --- 2.4.0-test4-pre6/kernel/softirq.c Fri Mar 10 03:22:34 2000 +++ vm-25/kernel/softirq.c Sat Jul 15 15:12:16 2000 @@ -201,7 +201,11 @@ while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) { if (in_interrupt()) panic("Attempt to kill tasklet from interrupt\n"); - schedule(); + do { + current->state = TASK_RUNNING; + current->policy |= SCHED_YIELD; + schedule(); + } while (test_bit(TASKLET_STATE_SCHED, &t->state)); } tasklet_unlock_wait(t); clear_bit(TASKLET_STATE_SCHED, &t->state);