From e4085693f629ded8ac8c35b5cdd324d20242990b Mon Sep 17 00:00:00 2001 From: John Stultz Date: Fri, 22 Mar 2013 12:08:52 -0700 Subject: ntp: Move timex validation to timekeeping do_adjtimex call. Move logic that does not need the ntp state to be done in the timekeeping do_adjtimex() call. Cc: Thomas Gleixner Cc: Richard Cochran Cc: Prarit Bhargava Signed-off-by: John Stultz --- kernel/time/ntp.c | 5 ----- kernel/time/ntp_internal.h | 1 + kernel/time/timekeeping.c | 7 +++++++ 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'kernel') diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index 8b107068d7e3..2dc60c6fe76b 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c @@ -668,11 +668,6 @@ int __do_adjtimex(struct timex *txc) u32 time_tai, orig_tai; int result; - /* Validate the data before disabling interrupts */ - result = ntp_validate_timex(txc); - if (result) - return result; - if (txc->modes & ADJ_SETOFFSET) { struct timespec delta; delta.tv_sec = txc->time.tv_sec; diff --git a/kernel/time/ntp_internal.h b/kernel/time/ntp_internal.h index fdee80cb34f3..a2a397659e46 100644 --- a/kernel/time/ntp_internal.h +++ b/kernel/time/ntp_internal.h @@ -6,6 +6,7 @@ extern void ntp_clear(void); /* Returns how long ticks are at present, in ns / 2^NTP_SCALE_SHIFT. */ extern u64 ntp_tick_length(void); extern int second_overflow(unsigned long secs); +extern int ntp_validate_timex(struct timex *); extern int __do_adjtimex(struct timex *); extern void __hardpps(const struct timespec *, const struct timespec *); #endif /* _LINUX_NTP_INTERNAL_H */ diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index a138ec2cde3e..f6c8a7279157 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -1618,6 +1618,13 @@ EXPORT_SYMBOL_GPL(ktime_get_monotonic_offset); */ int do_adjtimex(struct timex *txc) { + int ret; + + /* Validate the data before disabling interrupts */ + ret = ntp_validate_timex(txc); + if (ret) + return ret; + return __do_adjtimex(txc); } -- cgit v1.2.1