--- linux-2.6/kernel/async.c +++ linux-2.6/kernel/async.c @@ -433,9 +433,10 @@ last_uatom = uatom; ret = __exec_atom(t, &atom); - if (unlikely(signal_pending(t) || need_resched())) + if (signal_pending(t)) goto stop; + cond_resched(); uatom = next_uatom(&atom, uatom, ret); if (uatom) goto run_next;