Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86
* git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86: ACPI: move timer broadcast before busmaster disable clockevents: warn once when program_event() is called with negative expiry hrtimers: avoid overflow for large relative timeouts
This commit is contained in:
commit
2c5ea0f2d8
3 changed files with 27 additions and 5 deletions
|
|
@ -850,6 +850,14 @@ hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)
|
|||
#ifdef CONFIG_TIME_LOW_RES
|
||||
tim = ktime_add(tim, base->resolution);
|
||||
#endif
|
||||
/*
|
||||
* Careful here: User space might have asked for a
|
||||
* very long sleep, so the add above might result in a
|
||||
* negative number, which enqueues the timer in front
|
||||
* of the queue.
|
||||
*/
|
||||
if (tim.tv64 < 0)
|
||||
tim.tv64 = KTIME_MAX;
|
||||
}
|
||||
timer->expires = tim;
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue