summaryrefslogtreecommitdiffstats
path: root/drivers/pps
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2015-09-28 22:21:28 +0200
committerJohn Stultz <john.stultz@linaro.org>2015-10-01 09:57:59 -0700
commit7ec88e4be461590b5a3817460c34603f76d9b3ae (patch)
tree00bcd8cf85a86a36c91e3e1d4c039a9ae491f770 /drivers/pps
parent9ffecb10283508260936b96022d4ee43a7798b4c (diff)
downloadlinux-7ec88e4be461590b5a3817460c34603f76d9b3ae.tar.gz
linux-7ec88e4be461590b5a3817460c34603f76d9b3ae.tar.bz2
linux-7ec88e4be461590b5a3817460c34603f76d9b3ae.zip
ntp/pps: use timespec64 for hardpps()
There is only one user of the hardpps function in the kernel, so it makes sense to atomically change it over to using 64-bit timestamps for y2038 safety. In the hardpps implementation, we also need to change the pps_normtime structure, which is similar to struct timespec and also requires a 64-bit seconds portion. This introduces two temporary variables in pps_kc_event() to do the conversion, they will be removed again in the next step, which seemed preferable to having a larger patch changing it all at the same time. Acked-by: Richard Cochran <richardcochran@gmail.com> Acked-by: David S. Miller <davem@davemloft.net> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: John Stultz <john.stultz@linaro.org>
Diffstat (limited to 'drivers/pps')
-rw-r--r--drivers/pps/kc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/pps/kc.c b/drivers/pps/kc.c
index e219db1f1c84..a16cea2ba980 100644
--- a/drivers/pps/kc.c
+++ b/drivers/pps/kc.c
@@ -113,10 +113,12 @@ void pps_kc_event(struct pps_device *pps, struct pps_event_time *ts,
int event)
{
unsigned long flags;
+ struct timespec64 real = timespec_to_timespec64(ts->ts_real);
+ struct timespec64 raw = timespec_to_timespec64(ts->ts_raw);
/* Pass some events to kernel consumer if activated */
spin_lock_irqsave(&pps_kc_hardpps_lock, flags);
if (pps == pps_kc_hardpps_dev && event & pps_kc_hardpps_mode)
- hardpps(&ts->ts_real, &ts->ts_raw);
+ hardpps(&real, &raw);
spin_unlock_irqrestore(&pps_kc_hardpps_lock, flags);
}