diff options
Diffstat (limited to 'kernel/time/timekeeping.c')
-rw-r--r-- | kernel/time/timekeeping.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 85f5912d8f70..44b726bab4bd 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c | |||
@@ -808,17 +808,18 @@ ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs) | |||
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, *offset = offsets[offs]; | 810 | ktime_t base, *offset = offsets[offs]; |
811 | u64 nsecs; | ||
811 | 812 | ||
812 | WARN_ON(timekeeping_suspended); | 813 | WARN_ON(timekeeping_suspended); |
813 | 814 | ||
814 | do { | 815 | do { |
815 | seq = read_seqcount_begin(&tk_core.seq); | 816 | seq = read_seqcount_begin(&tk_core.seq); |
816 | base = ktime_add(tk->tkr_mono.base, *offset); | 817 | base = ktime_add(tk->tkr_mono.base, *offset); |
818 | nsecs = tk->tkr_mono.xtime_nsec >> tk->tkr_mono.shift; | ||
817 | 819 | ||
818 | } while (read_seqcount_retry(&tk_core.seq, seq)); | 820 | } while (read_seqcount_retry(&tk_core.seq, seq)); |
819 | 821 | ||
820 | return base; | 822 | return base + nsecs; |
821 | |||
822 | } | 823 | } |
823 | EXPORT_SYMBOL_GPL(ktime_get_coarse_with_offset); | 824 | EXPORT_SYMBOL_GPL(ktime_get_coarse_with_offset); |
824 | 825 | ||