[ARM] 4149/1: AT91: Overrun in SAM9 gettimeoffset().
authorAndrew Victor <andrew@sanpeople.com>
Thu, 8 Feb 2007 10:04:19 +0000 (11:04 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 8 Feb 2007 14:55:29 +0000 (14:55 +0000)
Fix an overrun in the AT91SAM9 gettimeoffset() function.  This causes
the time value returned by gettimeofday() to jump "backwards".

Original patch from Michel Benoit.

Signed-off-by: Andrew Victor <andrew@sanpeople.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-at91/at91sam926x_time.c

index 59cbbe1e81611246eb47aefffb9d91d5c637403a..a4dded27fa16a0dab13fa674293e7f2873b2a538 100644 (file)
@@ -30,7 +30,6 @@
  * Returns number of microseconds since last timer interrupt.  Note that interrupts
  * will have been disabled by do_gettimeofday()
  *  'LATCH' is hwclock ticks (see CLOCK_TICK_RATE in timex.h) per jiffy.
- *  'tick' is usecs per jiffy (linux/timex.h).
  */
 static unsigned long at91sam926x_gettimeoffset(void)
 {
@@ -39,7 +38,7 @@ static unsigned long at91sam926x_gettimeoffset(void)
 
        elapsed = (PIT_PICNT(t) * LATCH) + PIT_CPIV(t);         /* hardware clock cycles */
 
-       return (unsigned long)(elapsed * 1000000) / LATCH;
+       return (unsigned long)(elapsed * jiffies_to_usecs(1)) / LATCH;
 }
 
 /*