From 5cafd7a534aea996c8c426352ede1ef964e360de Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Wed, 30 Jan 2008 13:30:03 +0100 Subject: [PATCH] --- yaml --- r: 79699 b: refs/heads/master c: 45fe4fe19120a22f7339f5bb110447170c25fca9 h: refs/heads/master i: 79697: c05cacde029fc8b022075b9869e25558707f0408 79695: 1506c9b6eea8502355e84584887e29e2e5f70f9d v: v3 --- [refs] | 2 +- trunk/kernel/time/clockevents.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 50fe8e647547..e42382033fa1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1a0c009ac53de4a7664a1239936f0bc258133156 +refs/heads/master: 45fe4fe19120a22f7339f5bb110447170c25fca9 diff --git a/trunk/kernel/time/clockevents.c b/trunk/kernel/time/clockevents.c index 5fb139fef9fa..3e59fce6dd43 100644 --- a/trunk/kernel/time/clockevents.c +++ b/trunk/kernel/time/clockevents.c @@ -41,6 +41,11 @@ unsigned long clockevent_delta2ns(unsigned long latch, { u64 clc = ((u64) latch << evt->shift); + if (unlikely(!evt->mult)) { + evt->mult = 1; + WARN_ON(1); + } + do_div(clc, evt->mult); if (clc < 1000) clc = 1000; @@ -151,6 +156,14 @@ static void clockevents_notify_released(void) void clockevents_register_device(struct clock_event_device *dev) { BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED); + /* + * A nsec2cyc multiplicator of 0 is invalid and we'd crash + * on it, so fix it up and emit a warning: + */ + if (unlikely(!dev->mult)) { + dev->mult = 1; + WARN_ON(1); + } spin_lock(&clockevents_lock);