Commit 025929f4 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'timers_urgent_for_v5.11_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull timer fixes from Borislav Petkov:

 - Fix an integer overflow in the NTP RTC synchronization which led to
   the latter happening every 2 seconds instead of the intended every 11
   minutes.

 - Get rid of now unused get_seconds().

* tag 'timers_urgent_for_v5.11_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  ntp: Fix RTC synchronization on 32-bit platforms
  timekeeping: Remove unused get_seconds()
parents 17b6c49d e3fab2f3
...@@ -230,6 +230,5 @@ static inline ktime_t ms_to_ktime(u64 ms) ...@@ -230,6 +230,5 @@ static inline ktime_t ms_to_ktime(u64 ms)
} }
# include <linux/timekeeping.h> # include <linux/timekeeping.h>
# include <linux/timekeeping32.h>
#endif #endif
#ifndef _LINUX_TIMEKEEPING32_H
#define _LINUX_TIMEKEEPING32_H
/*
* These interfaces are all based on the old timespec type
* and should get replaced with the timespec64 based versions
* over time so we can remove the file here.
*/
static inline unsigned long get_seconds(void)
{
return ktime_get_real_seconds();
}
#endif
...@@ -498,7 +498,7 @@ int second_overflow(time64_t secs) ...@@ -498,7 +498,7 @@ int second_overflow(time64_t secs)
static void sync_hw_clock(struct work_struct *work); static void sync_hw_clock(struct work_struct *work);
static DECLARE_WORK(sync_work, sync_hw_clock); static DECLARE_WORK(sync_work, sync_hw_clock);
static struct hrtimer sync_hrtimer; static struct hrtimer sync_hrtimer;
#define SYNC_PERIOD_NS (11UL * 60 * NSEC_PER_SEC) #define SYNC_PERIOD_NS (11ULL * 60 * NSEC_PER_SEC)
static enum hrtimer_restart sync_timer_callback(struct hrtimer *timer) static enum hrtimer_restart sync_timer_callback(struct hrtimer *timer)
{ {
...@@ -512,7 +512,7 @@ static void sched_sync_hw_clock(unsigned long offset_nsec, bool retry) ...@@ -512,7 +512,7 @@ static void sched_sync_hw_clock(unsigned long offset_nsec, bool retry)
ktime_t exp = ktime_set(ktime_get_real_seconds(), 0); ktime_t exp = ktime_set(ktime_get_real_seconds(), 0);
if (retry) if (retry)
exp = ktime_add_ns(exp, 2 * NSEC_PER_SEC - offset_nsec); exp = ktime_add_ns(exp, 2ULL * NSEC_PER_SEC - offset_nsec);
else else
exp = ktime_add_ns(exp, SYNC_PERIOD_NS - offset_nsec); exp = ktime_add_ns(exp, SYNC_PERIOD_NS - offset_nsec);
......
...@@ -991,8 +991,7 @@ EXPORT_SYMBOL_GPL(ktime_get_seconds); ...@@ -991,8 +991,7 @@ EXPORT_SYMBOL_GPL(ktime_get_seconds);
/** /**
* ktime_get_real_seconds - Get the seconds portion of CLOCK_REALTIME * ktime_get_real_seconds - Get the seconds portion of CLOCK_REALTIME
* *
* Returns the wall clock seconds since 1970. This replaces the * Returns the wall clock seconds since 1970.
* get_seconds() interface which is not y2038 safe on 32bit systems.
* *
* For 64bit systems the fast access to tk->xtime_sec is preserved. On * For 64bit systems the fast access to tk->xtime_sec is preserved. On
* 32bit systems the access must be protected with the sequence * 32bit systems the access must be protected with the sequence
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment