diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2016-12-08 15:49:34 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-12-09 06:06:41 -0500 |
commit | acc89612a70e370a5640fd77a83f15b7b94d85e4 (patch) | |
tree | 147bc4f82c26a46c2b7e0ce69f3926213bf50c67 /kernel/time | |
parent | 9c1645727b8fa90d07256fdfcc45bf831242a3ab (diff) |
timekeeping: Make the conversion call chain consistently unsigned
Propagating a unsigned value through signed variables and functions makes
absolutely no sense and is just prone to (re)introduce subtle signed
vs. unsigned issues as happened recently.
Clean it up.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Parit Bhargava <prarit@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>
Cc: "Christopher S. Hall" <christopher.s.hall@intel.com>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Liav Rehana <liavr@mellanox.com>
Cc: John Stultz <john.stultz@linaro.org>
Link: http://lkml.kernel.org/r/20161208204228.765843099@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time')
-rw-r--r-- | kernel/time/timekeeping.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index bfe589e929e8..5244821643a4 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c | |||
@@ -311,7 +311,7 @@ static inline u64 timekeeping_delta_to_ns(struct tk_read_base *tkr, | |||
311 | return nsec + arch_gettimeoffset(); | 311 | return nsec + arch_gettimeoffset(); |
312 | } | 312 | } |
313 | 313 | ||
314 | static inline s64 timekeeping_get_ns(struct tk_read_base *tkr) | 314 | static inline u64 timekeeping_get_ns(struct tk_read_base *tkr) |
315 | { | 315 | { |
316 | cycle_t delta; | 316 | cycle_t delta; |
317 | 317 | ||
@@ -319,8 +319,8 @@ static inline s64 timekeeping_get_ns(struct tk_read_base *tkr) | |||
319 | return timekeeping_delta_to_ns(tkr, delta); | 319 | return timekeeping_delta_to_ns(tkr, delta); |
320 | } | 320 | } |
321 | 321 | ||
322 | static inline s64 timekeeping_cycles_to_ns(struct tk_read_base *tkr, | 322 | static inline u64 timekeeping_cycles_to_ns(struct tk_read_base *tkr, |
323 | cycle_t cycles) | 323 | cycle_t cycles) |
324 | { | 324 | { |
325 | cycle_t delta; | 325 | cycle_t delta; |
326 | 326 | ||
@@ -652,7 +652,7 @@ static void timekeeping_forward_now(struct timekeeper *tk) | |||
652 | { | 652 | { |
653 | struct clocksource *clock = tk->tkr_mono.clock; | 653 | struct clocksource *clock = tk->tkr_mono.clock; |
654 | cycle_t cycle_now, delta; | 654 | cycle_t cycle_now, delta; |
655 | s64 nsec; | 655 | u64 nsec; |
656 | 656 | ||
657 | cycle_now = tk->tkr_mono.read(clock); | 657 | cycle_now = tk->tkr_mono.read(clock); |
658 | delta = clocksource_delta(cycle_now, tk->tkr_mono.cycle_last, tk->tkr_mono.mask); | 658 | delta = clocksource_delta(cycle_now, tk->tkr_mono.cycle_last, tk->tkr_mono.mask); |
@@ -681,7 +681,7 @@ int __getnstimeofday64(struct timespec64 *ts) | |||
681 | { | 681 | { |
682 | struct timekeeper *tk = &tk_core.timekeeper; | 682 | struct timekeeper *tk = &tk_core.timekeeper; |
683 | unsigned long seq; | 683 | unsigned long seq; |
684 | s64 nsecs = 0; | 684 | u64 nsecs; |
685 | 685 | ||
686 | do { | 686 | do { |
687 | seq = read_seqcount_begin(&tk_core.seq); | 687 | seq = read_seqcount_begin(&tk_core.seq); |
@@ -721,7 +721,7 @@ ktime_t ktime_get(void) | |||
721 | struct timekeeper *tk = &tk_core.timekeeper; | 721 | struct timekeeper *tk = &tk_core.timekeeper; |
722 | unsigned int seq; | 722 | unsigned int seq; |
723 | ktime_t base; | 723 | ktime_t base; |
724 | s64 nsecs; | 724 | u64 nsecs; |
725 | 725 | ||
726 | WARN_ON(timekeeping_suspended); | 726 | WARN_ON(timekeeping_suspended); |
727 | 727 | ||
@@ -764,7 +764,7 @@ ktime_t ktime_get_with_offset(enum tk_offsets offs) | |||
764 | struct timekeeper *tk = &tk_core.timekeeper; | 764 | struct timekeeper *tk = &tk_core.timekeeper; |
765 | unsigned int seq; | 765 | unsigned int seq; |
766 | ktime_t base, *offset = offsets[offs]; | 766 | ktime_t base, *offset = offsets[offs]; |
767 | s64 nsecs; | 767 | u64 nsecs; |
768 | 768 | ||
769 | WARN_ON(timekeeping_suspended); | 769 | WARN_ON(timekeeping_suspended); |
770 | 770 | ||
@@ -808,7 +808,7 @@ ktime_t ktime_get_raw(void) | |||
808 | struct timekeeper *tk = &tk_core.timekeeper; | 808 | struct timekeeper *tk = &tk_core.timekeeper; |
809 | unsigned int seq; | 809 | unsigned int seq; |
810 | ktime_t base; | 810 | ktime_t base; |
811 | s64 nsecs; | 811 | u64 nsecs; |
812 | 812 | ||
813 | do { | 813 | do { |
814 | seq = read_seqcount_begin(&tk_core.seq); | 814 | seq = read_seqcount_begin(&tk_core.seq); |
@@ -833,8 +833,8 @@ void ktime_get_ts64(struct timespec64 *ts) | |||
833 | { | 833 | { |
834 | struct timekeeper *tk = &tk_core.timekeeper; | 834 | struct timekeeper *tk = &tk_core.timekeeper; |
835 | struct timespec64 tomono; | 835 | struct timespec64 tomono; |
836 | s64 nsec; | ||
837 | unsigned int seq; | 836 | unsigned int seq; |
837 | u64 nsec; | ||
838 | 838 | ||
839 | WARN_ON(timekeeping_suspended); | 839 | WARN_ON(timekeeping_suspended); |
840 | 840 | ||
@@ -922,8 +922,8 @@ void ktime_get_snapshot(struct system_time_snapshot *systime_snapshot) | |||
922 | unsigned long seq; | 922 | unsigned long seq; |
923 | ktime_t base_raw; | 923 | ktime_t base_raw; |
924 | ktime_t base_real; | 924 | ktime_t base_real; |
925 | s64 nsec_raw; | 925 | u64 nsec_raw; |
926 | s64 nsec_real; | 926 | u64 nsec_real; |
927 | cycle_t now; | 927 | cycle_t now; |
928 | 928 | ||
929 | WARN_ON_ONCE(timekeeping_suspended); | 929 | WARN_ON_ONCE(timekeeping_suspended); |
@@ -1081,7 +1081,7 @@ int get_device_system_crosststamp(int (*get_time_fn) | |||
1081 | cycle_t cycles, now, interval_start; | 1081 | cycle_t cycles, now, interval_start; |
1082 | unsigned int clock_was_set_seq = 0; | 1082 | unsigned int clock_was_set_seq = 0; |
1083 | ktime_t base_real, base_raw; | 1083 | ktime_t base_real, base_raw; |
1084 | s64 nsec_real, nsec_raw; | 1084 | u64 nsec_real, nsec_raw; |
1085 | u8 cs_was_changed_seq; | 1085 | u8 cs_was_changed_seq; |
1086 | unsigned long seq; | 1086 | unsigned long seq; |
1087 | bool do_interp; | 1087 | bool do_interp; |
@@ -1394,7 +1394,7 @@ void getrawmonotonic64(struct timespec64 *ts) | |||
1394 | struct timekeeper *tk = &tk_core.timekeeper; | 1394 | struct timekeeper *tk = &tk_core.timekeeper; |
1395 | struct timespec64 ts64; | 1395 | struct timespec64 ts64; |
1396 | unsigned long seq; | 1396 | unsigned long seq; |
1397 | s64 nsecs; | 1397 | u64 nsecs; |
1398 | 1398 | ||
1399 | do { | 1399 | do { |
1400 | seq = read_seqcount_begin(&tk_core.seq); | 1400 | seq = read_seqcount_begin(&tk_core.seq); |