浏览代码

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>
Thomas Gleixner 17 年之前
父节点
当前提交
167b1de3ee
共有 1 个文件被更改,包括 5 次插入0 次删除
  1. 5 0
      kernel/time/clockevents.c

+ 5 - 0
kernel/time/clockevents.c

@@ -78,6 +78,11 @@ int clockevents_program_event(struct clock_event_device *dev, ktime_t expires,
 	unsigned long long clc;
 	unsigned long long clc;
 	int64_t delta;
 	int64_t delta;
 
 
+	if (unlikely(expires.tv64 < 0)) {
+		WARN_ON_ONCE(1);
+		return -ETIME;
+	}
+
 	delta = ktime_to_ns(ktime_sub(expires, now));
 	delta = ktime_to_ns(ktime_sub(expires, now));
 
 
 	if (delta <= 0)
 	if (delta <= 0)