diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-02-23 00:40:54 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-02-23 00:40:54 +0000 |
commit | 529c593ece216e4aaffd36bd940cb94f1fa63129 (patch) | |
tree | 78f1c0b805f5656aa7b0417a043c5346f700a2cf /kernel/itimer.c | |
parent | 0bd079751d25808d1972baee5c4eaa1db2227257 (diff) |
Merge with 2.3.43. I did ignore all modifications to the qlogicisp.c
driver due to the Origin A64 hacks.
Diffstat (limited to 'kernel/itimer.c')
-rw-r--r-- | kernel/itimer.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/kernel/itimer.c b/kernel/itimer.c index 7d38ac1ac..6c38477be 100644 --- a/kernel/itimer.c +++ b/kernel/itimer.c @@ -48,7 +48,9 @@ int do_getitimer(int which, struct itimerval *value) case ITIMER_REAL: interval = current->it_real_incr; val = 0; - start_bh_atomic(); + /* + * FIXME! This needs to be atomic, in case the kernel timer happens! + */ if (timer_pending(¤t->real_timer)) { val = current->real_timer.expires - jiffies; @@ -56,7 +58,6 @@ int do_getitimer(int which, struct itimerval *value) if ((long) val <= 0) val = 1; } - end_bh_atomic(); break; case ITIMER_VIRTUAL: val = current->it_virt_value; @@ -102,6 +103,7 @@ void it_real_fn(unsigned long __data) p->real_timer.expires = jiffies + interval; add_timer(&p->real_timer); } + timer_exit(&p->real_timer); } int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue) @@ -115,9 +117,7 @@ int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue) return k; switch (which) { case ITIMER_REAL: - start_bh_atomic(); - del_timer(¤t->real_timer); - end_bh_atomic(); + del_timer_sync(¤t->real_timer); current->it_real_value = j; current->it_real_incr = i; if (!j) |