clockevents: warn once when program_event() is called with negative expiry

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <git-commits-head@...>
Date: Friday, December 7, 2007 - 3:59 pm

Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=167b1d...
Commit:     167b1de3ee4e50d65a2bd0a2667c9cd48faf54f3
Parent:     62f0f61e6673e67151a7c8c0f9a09c7ea43fe2b5
Author:     Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Fri Dec 7 19:16:17 2007 +0100
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Fri Dec 7 19:16:17 2007 +0100

    clockevents: warn once when program_event() is called with negative expiry
    
    The hrtimer problem with large relative timeouts resulting in a
    negative expiry time went unnoticed as there is no check in the
    clockevents_program_event() code. Put a check there with a WARN_ONCE
    to avoid such problems in the future.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 kernel/time/clockevents.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
index 822beeb..5fb139f 100644
--- a/kernel/time/clockevents.c
+++ b/kernel/time/clockevents.c
@@ -78,6 +78,11 @@ int clockevents_program_event(struct clock_event_device *dev, ktime_t expires,
 	unsigned long long clc;
 	int64_t delta;
 
+	if (unlikely(expires.tv64 < 0)) {
+		WARN_ON_ONCE(1);
+		return -ETIME;
+	}
+
 	delta = ktime_to_ns(ktime_sub(expires, now));
 
 	if (delta <= 0)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
clockevents: warn once when program_event() is called with n..., Linux Kernel Mailing List..., (Fri Dec 7, 3:59 pm)