From 5d9deb77e9664cb173869e6d16f7faa117be6c55 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 8 Sep 2016 01:28:34 +0200 Subject: [PATCH] kernel: make sure procalarm() remaining time doesnt become negative --- sys/src/9/port/alarm.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sys/src/9/port/alarm.c b/sys/src/9/port/alarm.c index bd834cecc..233e88768 100644 --- a/sys/src/9/port/alarm.c +++ b/sys/src/9/port/alarm.c @@ -63,14 +63,20 @@ procalarm(ulong time) Proc **l, *f; ulong when, old; + when = MACHP(0)->ticks; old = up->alarm; - if(old) - old = tk2ms(old - MACHP(0)->ticks); + if(old) { + old -= when; + if((long)old > 0) + old = tk2ms(old); + else + old = 0; + } if(time == 0) { up->alarm = 0; return old; } - when = ms2tk(time)+MACHP(0)->ticks; + when += ms2tk(time); if(when == 0) when = 1;