• Linus Torvalds's avatar
    Merge tag 'y2038-drivers-for-v5.6-signed' of... · 22b17db4
    Linus Torvalds authored
    Merge tag 'y2038-drivers-for-v5.6-signed' of git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground
    
    Pull y2038 updates from Arnd Bergmann:
     "Core, driver and file system changes
    
      These are updates to device drivers and file systems that for some
      reason or another were not included in the kernel in the previous
      y2038 series.
    
      I've gone through all users of time_t again to make sure the kernel is
      in a long-term maintainable state, replacing all remaining references
      to time_t with safe alternatives.
    
      Some related parts of the series were picked up into the nfsd, xfs,
      alsa and v4l2 trees. A final set of patches in linux-mm removes the
      now unused time_t/timeval/timespec types and helper functions after
      all five branches are merged for linux-5.6, ensuring that no new users
      get merged.
    
      As a result, linux-5.6, or my backport of the patches to 5.4 [1],
      should be the first release that can serve as a base for a 32-bit
      system designed to run beyond year 2038, with a few remaining caveats:
    
       - All user space must be compiled with a 64-bit time_t, which will be
         supported in the coming musl-1.2 and glibc-2.32 releases, along
         with installed kernel headers from linux-5.6 or higher.
    
       - Applications that use the system call interfaces directly need to
         be ported to use the time64 syscalls added in linux-5.1 in place of
         the existing system calls. This impacts most users of futex() and
         seccomp() as well as programming languages that have their own
         runtime environment not based on libc.
    
       - Applications that use a private copy of kernel uapi header files or
         their contents may need to update to the linux-5.6 version, in
         particular for sound/asound.h, xfs/xfs_fs.h, linux/input.h,
         linux/elfcore.h, linux/sockios.h, linux/timex.h and
         linux/can/bcm.h.
    
       - A few remaining interfaces cannot be changed to pass a 64-bit
         time_t in a compatible way, so they must be configured to use
         CLOCK_MONOTONIC times or (with a y2106 problem) unsigned 32-bit
         timestamps. Most importantly this impacts all users of 'struct
         input_event'.
    
       - All y2038 problems that are present on 64-bit machines also apply
         to 32-bit machines. In particular this affects file systems with
         on-disk timestamps using signed 32-bit seconds: ext4 with
         ext3-style small inodes, ext2, xfs (to be fixed soon) and ufs"
    
    [1] https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git/log/?h=y2038-endgame
    
    * tag 'y2038-drivers-for-v5.6-signed' of git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground: (21 commits)
      Revert "drm/etnaviv: reject timeouts with tv_nsec >= NSEC_PER_SEC"
      y2038: sh: remove timeval/timespec usage from headers
      y2038: sparc: remove use of struct timex
      y2038: rename itimerval to __kernel_old_itimerval
      y2038: remove obsolete jiffies conversion functions
      nfs: fscache: use timespec64 in inode auxdata
      nfs: fix timstamp debug prints
      nfs: use time64_t internally
      sunrpc: convert to time64_t for expiry
      drm/etnaviv: avoid deprecated timespec
      drm/etnaviv: reject timeouts with tv_nsec >= NSEC_PER_SEC
      drm/msm: avoid using 'timespec'
      hfs/hfsplus: use 64-bit inode timestamps
      hostfs: pass 64-bit timestamps to/from user space
      packet: clarify timestamp overflow
      tsacct: add 64-bit btime field
      acct: stop using get_seconds()
      um: ubd: use 64-bit time_t where possible
      xtensa: ISS: avoid struct timeval
      dlm: use SO_SNDTIMEO_NEW instead of SO_SNDTIMEO_OLD
      ...
    22b17db4
af_packet.c 109 KB