| From 70a062286b9dfcbd24d2e11601aecfead5cf709a Mon Sep 17 00:00:00 2001 |
| From: Tim Deegan <Tim.Deegan@citrix.com> |
| Date: Thu, 10 Feb 2011 08:50:41 +0000 |
| Subject: fix jiffy calculations in calibrate_delay_direct to handle overflow |
| |
| From: Tim Deegan <Tim.Deegan@citrix.com> |
| |
| commit 70a062286b9dfcbd24d2e11601aecfead5cf709a upstream. |
| |
| Fixes a hang when booting as dom0 under Xen, when jiffies can be |
| quite large by the time the kernel init gets this far. |
| |
| Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com> |
| [jbeulich@novell.com: !time_after() -> time_before_eq() as suggested by Jiri Slaby] |
| Signed-off-by: Jan Beulich <jbeulich@novell.com> |
| Cc: Jiri Slaby <jslaby@suse.cz> |
| Cc: Jeremy Fitzhardinge <jeremy@goop.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| init/calibrate.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/init/calibrate.c |
| +++ b/init/calibrate.c |
| @@ -66,7 +66,7 @@ static unsigned long __cpuinit calibrate |
| pre_start = 0; |
| read_current_timer(&start); |
| start_jiffies = jiffies; |
| - while (jiffies <= (start_jiffies + 1)) { |
| + while (time_before_eq(jiffies, start_jiffies + 1)) { |
| pre_start = start; |
| read_current_timer(&start); |
| } |
| @@ -74,8 +74,8 @@ static unsigned long __cpuinit calibrate |
| |
| pre_end = 0; |
| end = post_start; |
| - while (jiffies <= |
| - (start_jiffies + 1 + DELAY_CALIBRATION_TICKS)) { |
| + while (time_before_eq(jiffies, start_jiffies + 1 + |
| + DELAY_CALIBRATION_TICKS)) { |
| pre_end = end; |
| read_current_timer(&end); |
| } |