]> git.baikalelectronics.ru Git - kernel.git/commit
[PATCH] posix timers: fix normalization problem
authorGeorge Anzinger <george@mvista.com>
Fri, 29 Jul 2005 04:16:16 +0000 (21:16 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 29 Jul 2005 04:46:05 +0000 (21:46 -0700)
commit894f3e0a76f8821db912a9726fe5dc6e060c0aa9
tree5f0d83021afeb7adffce9b41557e1d2e3c8c08bd
parent6fcc91b67affdcb4789ecab9336117e8c523e4db
[PATCH] posix timers: fix normalization problem

(We found this (after a customer complained) and it is in the kernel.org
kernel.  Seems that for CLOCK_MONOTONIC absolute timers and clock_nanosleep
calls both the request time and wall_to_monotonic are subtracted prior to
the normalize resulting in an overflow in the existing normalize test.
This causes the result to be shifted ~4 seconds ahead instead of ~2 seconds
back in time.)

The normalize code in posix-timers.c fails when the tv_nsec member is ~1.2
seconds negative.  This can happen on absolute timers (and
clock_nanosleeps) requested on CLOCK_MONOTONIC (both the request time and
wall_to_monotonic are subtracted resulting in the possibility of a number
close to -2 seconds.)

This fix uses the set_normalized_timespec() (which does not have an
overflow problem) to fix the problem and as a side effect makes the code
cleaner.

Signed-off-by: George Anzinger <george@mvista.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/posix-timers.c