posix cpu timers: fix timer ordering

Pointed out by Oleg Nesterov, who has been walking over the code
forwards and backwards.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Linus Torvalds 2005-10-26 11:23:06 -07:00
parent b0917bd912
commit 70ab81c2ed

View File

@ -576,17 +576,15 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now)
listpos = head; listpos = head;
if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) { if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) {
list_for_each_entry(next, head, entry) { list_for_each_entry(next, head, entry) {
if (next->expires.sched > nt->expires.sched) { if (next->expires.sched > nt->expires.sched)
listpos = &next->entry;
break; break;
} listpos = &next->entry;
} }
} else { } else {
list_for_each_entry(next, head, entry) { list_for_each_entry(next, head, entry) {
if (cputime_gt(next->expires.cpu, nt->expires.cpu)) { if (cputime_gt(next->expires.cpu, nt->expires.cpu))
listpos = &next->entry;
break; break;
} listpos = &next->entry;
} }
} }
list_add(&nt->entry, listpos); list_add(&nt->entry, listpos);