diff options
Diffstat (limited to 'kernel/time')
-rw-r--r-- | kernel/time/ntp.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index 313b161504b7..b10a42bb0165 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c | |||
@@ -511,13 +511,17 @@ static void sync_cmos_clock(struct work_struct *work) | |||
511 | 511 | ||
512 | getnstimeofday(&now); | 512 | getnstimeofday(&now); |
513 | if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) <= tick_nsec / 2) { | 513 | if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) <= tick_nsec / 2) { |
514 | struct timespec adjust = now; | ||
515 | |||
514 | fail = -ENODEV; | 516 | fail = -ENODEV; |
517 | if (persistent_clock_is_local) | ||
518 | adjust.tv_sec -= (sys_tz.tz_minuteswest * 60); | ||
515 | #ifdef CONFIG_GENERIC_CMOS_UPDATE | 519 | #ifdef CONFIG_GENERIC_CMOS_UPDATE |
516 | fail = update_persistent_clock(now); | 520 | fail = update_persistent_clock(adjust); |
517 | #endif | 521 | #endif |
518 | #ifdef CONFIG_RTC_SYSTOHC | 522 | #ifdef CONFIG_RTC_SYSTOHC |
519 | if (fail == -ENODEV) | 523 | if (fail == -ENODEV) |
520 | fail = rtc_set_ntp_time(now); | 524 | fail = rtc_set_ntp_time(adjust); |
521 | #endif | 525 | #endif |
522 | } | 526 | } |
523 | 527 | ||