diff options
| author | Artem B. Bityuckiy <dedekind@infradead.org> | 2005-07-06 10:43:18 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@mtd.linutronix.de> | 2005-07-06 13:40:38 -0400 |
| commit | b3539219c9ea20ebf6a5ea3cc534f423a3607c41 (patch) | |
| tree | d17c31c0eac0a7290ba5011b59a100fd9e9c9532 /kernel/itimer.c | |
| parent | 6430a8def12edebc1c9c7c2621d33ca0e8653c33 (diff) | |
| parent | a18bcb7450840f07a772a45229de4811d930f461 (diff) | |
Merge with rsync://fileserver/linux
Update to 2.6.12-rc3
Diffstat (limited to 'kernel/itimer.c')
| -rw-r--r-- | kernel/itimer.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/itimer.c b/kernel/itimer.c index 1dc988e0d2c7..a72cb0e5aa4b 100644 --- a/kernel/itimer.c +++ b/kernel/itimer.c | |||
| @@ -153,11 +153,15 @@ int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue) | |||
| 153 | 153 | ||
| 154 | switch (which) { | 154 | switch (which) { |
| 155 | case ITIMER_REAL: | 155 | case ITIMER_REAL: |
| 156 | again: | ||
| 156 | spin_lock_irq(&tsk->sighand->siglock); | 157 | spin_lock_irq(&tsk->sighand->siglock); |
| 157 | interval = tsk->signal->it_real_incr; | 158 | interval = tsk->signal->it_real_incr; |
| 158 | val = it_real_value(tsk->signal); | 159 | val = it_real_value(tsk->signal); |
| 159 | if (val) | 160 | /* We are sharing ->siglock with it_real_fn() */ |
| 160 | del_timer_sync(&tsk->signal->real_timer); | 161 | if (try_to_del_timer_sync(&tsk->signal->real_timer) < 0) { |
| 162 | spin_unlock_irq(&tsk->sighand->siglock); | ||
| 163 | goto again; | ||
| 164 | } | ||
| 161 | tsk->signal->it_real_incr = | 165 | tsk->signal->it_real_incr = |
| 162 | timeval_to_jiffies(&value->it_interval); | 166 | timeval_to_jiffies(&value->it_interval); |
| 163 | it_real_arm(tsk, timeval_to_jiffies(&value->it_value)); | 167 | it_real_arm(tsk, timeval_to_jiffies(&value->it_value)); |
