2006-01-30 08:57:48

by Gerd Hoffmann

[permalink] [raw]
Subject: [patch] fix alarm() return value

Index: linux-2.6.15/kernel/itimer.c
===================================================================
--- linux-2.6.15.orig/kernel/itimer.c 2006-01-27 16:11:33.000000000 +0100
+++ linux-2.6.15/kernel/itimer.c 2006-01-27 17:01:54.000000000 +0100
@@ -151,12 +151,12 @@ int do_setitimer(int which, struct itime
switch (which) {
case ITIMER_REAL:
timer = &tsk->signal->real_timer;
- hrtimer_cancel(timer);
if (ovalue) {
ovalue->it_value = itimer_get_remtime(timer);
ovalue->it_interval
= ktime_to_timeval(tsk->signal->it_real_incr);
}
+ hrtimer_cancel(timer);
tsk->signal->it_real_incr =
timeval_to_ktime(value->it_interval);
expires = timeval_to_ktime(value->it_value);


Attachments:
fix-146142 (707.00 B)

2006-01-30 09:06:20

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [patch] fix alarm() return value

On Mon, 2006-01-30 at 09:57 +0100, Gerd Hoffmann wrote:
> Hi folks,
>
> This patch fixes the alarm() system call return value. The alarm(2)
> syscall is supposed to return the reamining seconds. The hrtimer
> switchover broke this because the code tries to gather the remaining
> time _after_ canceling the timer. Trivial fix below.

Thanks. The fix is already in -mm and scheduled to go into 2.6.16

tglx