diff options
author | George Anzinger <george@mvista.com> | 2005-07-28 21:16:16 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-28 21:46:05 -0700 |
commit | 78fa74a23b16bdb0d944272b696915c4e0bb3ee1 (patch) | |
tree | 5f0d83021afeb7adffce9b41557e1d2e3c8c08bd /arch/i386/kernel/numaq.c | |
parent | a2d76bd8fa29f9b6dbf3ee8f6bc7bdda21bc5ce8 (diff) |
[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>
Diffstat (limited to 'arch/i386/kernel/numaq.c')
0 files changed, 0 insertions, 0 deletions