X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=kernel%2Fitimer.c;h=307c6a632ef6baa7ff0cec46273293d4cc84afc6;hb=019ee04d4cf9c725630d50b0c7689fe444c3fa09;hp=9cefe1d1eb13c5c46c29823c71578538bc4461f4;hpb=c9cb2e3d7c9178ab75d0942f96abb3abe0369906;p=linux-2.6-omap-h63xx.git diff --git a/kernel/itimer.c b/kernel/itimer.c index 9cefe1d1eb1..307c6a632ef 100644 --- a/kernel/itimer.c +++ b/kernel/itimer.c @@ -135,11 +135,6 @@ enum hrtimer_restart it_real_fn(struct hrtimer *timer) send_group_sig_info(SIGALRM, SEND_SIG_PRIV, sig->tsk); - if (sig->it_real_incr.tv64 != 0) { - hrtimer_forward(timer, timer->base->softirq_time, - sig->it_real_incr); - return HRTIMER_RESTART; - } return HRTIMER_NORESTART; } @@ -231,11 +226,14 @@ again: spin_unlock_irq(&tsk->sighand->siglock); goto again; } - tsk->signal->it_real_incr = - timeval_to_ktime(value->it_interval); expires = timeval_to_ktime(value->it_value); - if (expires.tv64 != 0) + if (expires.tv64 != 0) { + tsk->signal->it_real_incr = + timeval_to_ktime(value->it_interval); hrtimer_start(timer, expires, HRTIMER_MODE_REL); + } else + tsk->signal->it_real_incr.tv64 = 0; + spin_unlock_irq(&tsk->sighand->siglock); break; case ITIMER_VIRTUAL: