timekeeping: Fix invalid getboottime() value
Don't use timespec_add_safe() with wall_to_monotonic, because wall_to_monotonic has negative values which will cause overflow in timespec_add_safe(). That makes btime in /proc/stat invalid. Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: John Stultz <johnstul@us.ibm.com> Cc: Daniel Walker <dwalker@fifo99.com> LKML-Reference: <4A937FDE.4050506@ct.jp.nec.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
0ceb4c3e3f
commit
36d47481b3
@ -826,9 +826,11 @@ void update_wall_time(void)
|
||||
*/
|
||||
void getboottime(struct timespec *ts)
|
||||
{
|
||||
struct timespec boottime;
|
||||
struct timespec boottime = {
|
||||
.tv_sec = wall_to_monotonic.tv_sec + total_sleep_time.tv_sec,
|
||||
.tv_nsec = wall_to_monotonic.tv_nsec + total_sleep_time.tv_nsec
|
||||
};
|
||||
|
||||
boottime = timespec_add_safe(wall_to_monotonic, total_sleep_time);
|
||||
set_normalized_timespec(ts, -boottime.tv_sec, -boottime.tv_nsec);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user