diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-05-05 13:09:15 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-05-05 13:09:15 -0400 |
commit | c5f8fe8068f9827deb3f720d71fc7c5153390603 (patch) | |
tree | 4f57f35b6a50146f711c7f107240c2d8fabdd45f /runtime/time.c | |
parent | c796d8126eab0bd640708854ef662ac7761669f8 (diff) | |
download | systemtap-steved-c5f8fe8068f9827deb3f720d71fc7c5153390603.tar.gz systemtap-steved-c5f8fe8068f9827deb3f720d71fc7c5153390603.tar.xz systemtap-steved-c5f8fe8068f9827deb3f720d71fc7c5153390603.zip |
PR6481: timer reset needs irqs reenabled
Diffstat (limited to 'runtime/time.c')
-rw-r--r-- | runtime/time.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/runtime/time.c b/runtime/time.c index 52a2edbb..8a0b6fad 100644 --- a/runtime/time.c +++ b/runtime/time.c @@ -131,10 +131,13 @@ __stp_time_timer_callback(unsigned long val) time->base_cycles = cycles; write_sequnlock(&time->lock); + local_irq_restore(flags); + /* PR6481: reenable IRQs before resetting the timer. + XXX: The worst that can probably happen is that we get + two consecutive timer resets. */ + if (likely(stp_timer_reregister)) mod_timer(&time->timer, jiffies + 1); - - local_irq_restore(flags); } /* This is called as an IPI, with interrupts disabled. */ |