From cd46aa8382e35e0cb8415ea6c04e1ae2a9eaeaf6 Mon Sep 17 00:00:00 2001 From: Tzafrir Cohen Date: Tue, 29 Mar 2011 16:49:12 +0200 Subject: [PATCH] core timer: don't hang when the clock goes back If the clock shifts back, don't hang in a loop of running process_masterspan from the timer interrupt forever. Fixes a regression of r9407. Signed-off-by: Tzafrir Cohen --- drivers/dahdi/dahdi-base.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 8a634d3..0820e01 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -8986,6 +8986,16 @@ static void coretimer_func(unsigned long param) core_timer.start_interval = now; return; } + if (unlikely(difference < 0)) { + if (printk_ratelimit()) { + module_printk(KERN_INFO, + "Detected revrse time shift.\n"); + } + atomic_set(&core_timer.count, 0); + atomic_set(&core_timer.last_count, 0); + core_timer.start_interval = now; + return; + } while (ms_since_start > msecs_processed(&core_timer)) process_masterspan(); -- 1.7.4.1