aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/time/ntp.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
index 36f2ca09aa5e..6df8927c58a5 100644
--- a/kernel/time/ntp.c
+++ b/kernel/time/ntp.c
@@ -685,8 +685,18 @@ int ntp_validate_timex(struct timex *txc)
685 if (!capable(CAP_SYS_TIME)) 685 if (!capable(CAP_SYS_TIME))
686 return -EPERM; 686 return -EPERM;
687 687
688 if (!timeval_inject_offset_valid(&txc->time)) 688 if (txc->modes & ADJ_NANO) {
689 return -EINVAL; 689 struct timespec ts;
690
691 ts.tv_sec = txc->time.tv_sec;
692 ts.tv_nsec = txc->time.tv_usec;
693 if (!timespec_inject_offset_valid(&ts))
694 return -EINVAL;
695
696 } else {
697 if (!timeval_inject_offset_valid(&txc->time))
698 return -EINVAL;
699 }
690 } 700 }
691 701
692 /* 702 /*