| From c9c024b3f3e07d087974db4c0dc46217fff3a6c0 Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Mon, 5 Dec 2011 21:20:23 +0100 |
| Subject: alarmtimers: Fix time comparison |
| |
| From: Thomas Gleixner <tglx@linutronix.de> |
| |
| commit c9c024b3f3e07d087974db4c0dc46217fff3a6c0 upstream. |
| |
| The expiry function compares the timer against current time and does |
| not expire the timer when the expiry time is >= now. That's wrong. If |
| the timer is set for now, then it must expire. |
| |
| Make the condition expiry > now for breaking out the loop. |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Acked-by: John Stultz <john.stultz@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| kernel/time/alarmtimer.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/kernel/time/alarmtimer.c |
| +++ b/kernel/time/alarmtimer.c |
| @@ -181,7 +181,7 @@ static enum hrtimer_restart alarmtimer_f |
| struct alarm *alarm; |
| ktime_t expired = next->expires; |
| |
| - if (expired.tv64 >= now.tv64) |
| + if (expired.tv64 > now.tv64) |
| break; |
| |
| alarm = container_of(next, struct alarm, node); |