All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH v2 00/11] Convert do_settimeofday() to use timespec64
@ 2014-10-30 11:15 pang.xunlei
  2014-10-30 11:15 ` [RFC PATCH v2 01/11] time: Add do_settimeofday64() safe version(using timespec64) pang.xunlei
                   ` (19 more replies)
  0 siblings, 20 replies; 49+ messages in thread
From: pang.xunlei @ 2014-10-30 11:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: rtc-linux, xen-devel, John Stultz, Thomas Gleixner,
	Alessandro Zummo, Stefano Stabellini, pang.xunlei

The kernel uses 32-bit signed value(time_t) for seconds since 
1970-01-01:00:00:00, so it will overflow at 2038-01-19 03:14:08 on 
32-bit systems. We call this "2038 safety" issue.

Currently, I'm working with "John Stultz" to deal with this issue.

This series doesn't involve any functional change, and mainly converts 
do_settimeofday() to use timespec64(By adding new do_settimeofday64() 
using timespec64). During the conversion, it needs to handle mktime(), 
rtc_tm_to_time(), rtc_time_to_tm() and other functions similarly due 
to dependencies.

The main processing logic here is:
Add xxx64() safe version:
	*Add do_settimeofday64() safe version(using timespec64)
	*Add mktime64() safe version(using time64_t)
	*Add rtc_tm_to_time64() safe version(using time64_t)
	*Add rtc_time_to_tm64() safe version(using time64_t)

Clean unsafe do_settimeofday():
	*Convert all users of do_settimeofday() to use do_settimeofday64()
	*Remove do_settimeofday()
	*Try the best to eliminate TODOs brought by these patches

Clean unsafe mktime()/rtc_tm_to_time()/rtc_time_to_tm() respectively:
	*Convert all users of xxx() to use xxx64() one by one
	*Try the best to eliminate TODOs brought by these patches
	*Remove xxx()

So the rest of this patch series does tons of work on these conversions.

NOTE: This series actually contains 153 patches in total, but just sent
out a small subset here for feedback to make sure there are no objections
with my approach. 

Please access the link below for all the related patches if interested:
https://git.linaro.org/people/pang.xunlei/linuxstable.git

pang.xunlei (11):
  time: Add do_settimeofday64() safe version(using timespec64)
  time: Add mktime64() safe version(using time64_t)
  time: Add rtc_tm_to_time64() safe version(using time64_t)
  time: Add rtc_time_to_tm64() safe version(using time64_t)
  time: Convert all users of do_settimeofday() to use
    do_settimeofday64()
  time: Remove do_settimeofday()
  time: Convert alarm_set_rtc() to use timespec64
  time: Convert xen_read_wallclock() to use timespec64
  time: Convert pvclock_read_wallclock() to use timespec64
  time: Convert x86_platform.set_wallclock()to use timespec64
  time: Convert x86_platform.get_wallclock()to use timespec64

 arch/x86/include/asm/intel_mid_vrtc.h        |    4 +-
 arch/x86/include/asm/mc146818rtc.h           |    4 +-
 arch/x86/include/asm/pvclock.h               |    2 +-
 arch/x86/include/asm/x86_init.h              |   11 ++++--
 arch/x86/kernel/kvmclock.c                   |    6 +--
 arch/x86/kernel/pvclock.c                    |    9 +++--
 arch/x86/kernel/rtc.c                        |   30 ++++++++++-----
 arch/x86/lguest/boot.c                       |    4 +-
 arch/x86/platform/intel-mid/intel_mid_vrtc.c |   12 +++---
 arch/x86/xen/time.c                          |   13 +++----
 drivers/hv/hv_util.c                         |    6 +--
 drivers/rtc/hctosys.c                        |   10 ++---
 drivers/rtc/rtc-lib.c                        |   35 ++++++++++++++---
 drivers/staging/android/alarm-dev.c          |   14 +++++--
 include/linux/lguest.h                       |    2 +-
 include/linux/rtc.h                          |    2 +
 include/linux/time.h                         |    4 ++
 include/linux/time64.h                       |    5 ++-
 include/linux/timekeeping.h                  |    2 +-
 kernel/compat.c                              |    5 ++-
 kernel/time/time.c                           |   52 ++++++++++++++++++++++++--
 kernel/time/timekeeping.c                    |   20 +++++-----
 22 files changed, 176 insertions(+), 76 deletions(-)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 49+ messages in thread

end of thread, other threads:[~2014-10-30 20:49 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-30 11:15 [RFC PATCH v2 00/11] Convert do_settimeofday() to use timespec64 pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 01/11] time: Add do_settimeofday64() safe version(using timespec64) pang.xunlei
2014-10-30 13:24   ` Thomas Gleixner
2014-10-30 13:24   ` Thomas Gleixner
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 02/11] time: Add mktime64() safe version(using time64_t) pang.xunlei
2014-10-30 13:43   ` Thomas Gleixner
2014-10-30 13:43   ` Thomas Gleixner
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 03/11] time: Add rtc_tm_to_time64() " pang.xunlei
2014-10-30 13:55   ` Thomas Gleixner
2014-10-30 16:30     ` pang.xunlei
2014-10-30 20:49       ` Thomas Gleixner
2014-10-30 20:49       ` Thomas Gleixner
2014-10-30 16:30     ` pang.xunlei
2014-10-30 13:55   ` Thomas Gleixner
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 04/11] time: Add rtc_time_to_tm64() " pang.xunlei
2014-10-30 14:07   ` Thomas Gleixner
2014-10-30 14:07   ` Thomas Gleixner
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 05/11] time: Convert all users of do_settimeofday() to use do_settimeofday64() pang.xunlei
2014-10-30 14:49   ` Thomas Gleixner
2014-10-30 14:49   ` Thomas Gleixner
2014-10-30 15:27     ` John Stultz
2014-10-30 16:06       ` Thomas Gleixner
2014-10-30 16:06       ` Thomas Gleixner
2014-10-30 15:27     ` John Stultz
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 06/11] time: Remove do_settimeofday() pang.xunlei
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 07/11] time: Convert alarm_set_rtc() to use timespec64 pang.xunlei
2014-10-30 14:52   ` Thomas Gleixner
2014-10-30 14:52   ` Thomas Gleixner
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 08/11] time: Convert xen_read_wallclock() " pang.xunlei
2014-10-30 11:15   ` pang.xunlei
2014-10-30 11:30   ` David Vrabel
2014-10-30 14:58     ` Thomas Gleixner
2014-10-30 14:58     ` [Xen-devel] " Thomas Gleixner
2014-10-30 11:15 ` [RFC PATCH v2 09/11] time: Convert pvclock_read_wallclock() " pang.xunlei
2014-10-30 11:15   ` pang.xunlei
2014-10-30 11:37   ` David Vrabel
2014-10-30 14:57   ` Thomas Gleixner
2014-10-30 14:57   ` Thomas Gleixner
2014-10-30 11:15 ` [RFC PATCH v2 10/11] time: Convert x86_platform.set_wallclock()to " pang.xunlei
2014-10-30 11:15 ` pang.xunlei
2014-10-30 11:15 ` [RFC PATCH v2 11/11] time: Convert x86_platform.get_wallclock()to " pang.xunlei
2014-10-30 11:15 ` pang.xunlei

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.