*** 3017,3032 **** p->totalrun = 0; p->slice = slice(p); time_slice_expired(p, rq); - goto out_unlock; } /* * Tasks that run out of time_slice but still have slice left get * requeued with a lower priority && RR_INTERVAL time_slice. */ - if (!--p->time_slice) time_slice_expired(p, rq); - out_unlock: - spin_unlock(&rq->lock); } /* --- 3022,3038 ---- p->totalrun = 0; p->slice = slice(p); time_slice_expired(p, rq); + return 1; } /* * Tasks that run out of time_slice but still have slice left get * requeued with a lower priority && RR_INTERVAL time_slice. */ + if (!--p->time_slice) { time_slice_expired(p, rq); + return 1; + } + return 0; }