diff options
author | John Stultz <john.stultz@linaro.org> | 2013-03-22 15:08:52 -0400 |
---|---|---|
committer | John Stultz <john.stultz@linaro.org> | 2013-04-04 16:18:14 -0400 |
commit | e4085693f629ded8ac8c35b5cdd324d20242990b (patch) | |
tree | 757707d15089ed0386b7f25bfa019cdfe9b44024 /kernel | |
parent | aa6f9c595d857328e5d815e5b94c0e7cd31a6b59 (diff) |
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 <tglx@linutronix.de>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/time/ntp.c | 5 | ||||
-rw-r--r-- | kernel/time/ntp_internal.h | 1 | ||||
-rw-r--r-- | kernel/time/timekeeping.c | 7 |
3 files changed, 8 insertions, 5 deletions
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) | |||
668 | u32 time_tai, orig_tai; | 668 | u32 time_tai, orig_tai; |
669 | int result; | 669 | int result; |
670 | 670 | ||
671 | /* Validate the data before disabling interrupts */ | ||
672 | result = ntp_validate_timex(txc); | ||
673 | if (result) | ||
674 | return result; | ||
675 | |||
676 | if (txc->modes & ADJ_SETOFFSET) { | 671 | if (txc->modes & ADJ_SETOFFSET) { |
677 | struct timespec delta; | 672 | struct timespec delta; |
678 | delta.tv_sec = txc->time.tv_sec; | 673 | 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); | |||
6 | /* Returns how long ticks are at present, in ns / 2^NTP_SCALE_SHIFT. */ | 6 | /* Returns how long ticks are at present, in ns / 2^NTP_SCALE_SHIFT. */ |
7 | extern u64 ntp_tick_length(void); | 7 | extern u64 ntp_tick_length(void); |
8 | extern int second_overflow(unsigned long secs); | 8 | extern int second_overflow(unsigned long secs); |
9 | extern int ntp_validate_timex(struct timex *); | ||
9 | extern int __do_adjtimex(struct timex *); | 10 | extern int __do_adjtimex(struct timex *); |
10 | extern void __hardpps(const struct timespec *, const struct timespec *); | 11 | extern void __hardpps(const struct timespec *, const struct timespec *); |
11 | #endif /* _LINUX_NTP_INTERNAL_H */ | 12 | #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); | |||
1618 | */ | 1618 | */ |
1619 | int do_adjtimex(struct timex *txc) | 1619 | int do_adjtimex(struct timex *txc) |
1620 | { | 1620 | { |
1621 | int ret; | ||
1622 | |||
1623 | /* Validate the data before disabling interrupts */ | ||
1624 | ret = ntp_validate_timex(txc); | ||
1625 | if (ret) | ||
1626 | return ret; | ||
1627 | |||
1621 | return __do_adjtimex(txc); | 1628 | return __do_adjtimex(txc); |
1622 | } | 1629 | } |
1623 | 1630 | ||