]> Pileus Git - ~andy/linux/blobdiff - kernel/time/timekeeping.c
ntp: Rework do_adjtimex to take timespec and tai arguments
[~andy/linux] / kernel / time / timekeeping.c
index a138ec2cde3e65527383d45e8bead48bad9115e2..5f7a2330dc3c50231b670c0c627ef6d3bb780c54 100644 (file)
@@ -1618,9 +1618,25 @@ EXPORT_SYMBOL_GPL(ktime_get_monotonic_offset);
  */
 int do_adjtimex(struct timex *txc)
 {
-       return __do_adjtimex(txc);
-}
+       struct timespec ts;
+       s32 tai, orig_tai;
+       int ret;
+
+       /* Validate the data before disabling interrupts */
+       ret = ntp_validate_timex(txc);
+       if (ret)
+               return ret;
+
+       getnstimeofday(&ts);
+       orig_tai = tai = timekeeping_get_tai_offset();
 
+       ret = __do_adjtimex(txc, &ts, &tai);
+
+       if (tai != orig_tai)
+               timekeeping_set_tai_offset(tai);
+
+       return ret;
+}
 
 #ifdef CONFIG_NTP_PPS
 /**