summaryrefslogtreecommitdiffstats
path: root/include/linux/time.h
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-09-14 23:37:40 +0200
committerThomas Gleixner <tglx@linutronix.de>2009-09-15 10:17:30 +0200
commit12e09337fe238981cb0c87543306e23775d1a143 (patch)
tree4c5052a801e6868ce2c701af10bf55f5ec5a4929 /include/linux/time.h
parent54a6bc0b071c50150bc6d1da16c2cd9a963e288c (diff)
downloadop-kernel-dev-12e09337fe238981cb0c87543306e23775d1a143.zip
op-kernel-dev-12e09337fe238981cb0c87543306e23775d1a143.tar.gz
time: Prevent 32 bit overflow with set_normalized_timespec()
set_normalized_timespec() nsec argument is of type long. The recent timekeeping changes of ktime_get_ts() feed ts->tv_nsec + tomono.tv_nsec + nsecs to set_normalized_timespec(). On 32 bit machines that sum can be larger than (1 << 31) and therefor result in a negative value which screws up the result completely. Make the nsec argument of set_normalized_timespec() s64 to fix the problem at hand. This also prevents similar problems for future users of set_normalized_timespec(). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Carsten Emde <carsten.emde@osadl.org> LKML-Reference: <new-submission> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: John Stultz <johnstul@us.ibm.com>
Diffstat (limited to 'include/linux/time.h')
-rw-r--r--include/linux/time.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/time.h b/include/linux/time.h
index 256232f..56787c0 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -75,7 +75,7 @@ extern unsigned long mktime(const unsigned int year, const unsigned int mon,
const unsigned int day, const unsigned int hour,
const unsigned int min, const unsigned int sec);
-extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec);
+extern void set_normalized_timespec(struct timespec *ts, time_t sec, s64 nsec);
extern struct timespec timespec_add_safe(const struct timespec lhs,
const struct timespec rhs);
OpenPOWER on IntegriCloud