[PATCH] s390: next_timer_interrupt overflow in stop_hz_timer
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Sat, 20 May 2006 22:00:25 +0000 (15:00 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 21 May 2006 19:59:21 +0000 (12:59 -0700)
commit92f63cd000059366af18712367216d96180e0ec0
tree4f88c3875afaa8183d6cfcff685e03ac7684d82d
parent0662b71322e211dba9a4bc0e6fbca7861a2b5a7d
[PATCH] s390: next_timer_interrupt overflow in stop_hz_timer

The 32 bit unsigned substraction (next - jiffies) in stop_hz_timer can
overflow if jiffies gets advanced between next_timer_interrupt and the read
under the xtime lock.  The cast to a u64 then results in a large value
which causes the cpu to wait too long.  Fix this by casting next and
jiffies independently to u64 before subtracting them.

(Spotted by Zachary Amsden <zach@vmware.com>)

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/s390/kernel/time.c