y2038: hide timeval/timespec/itimerval/itimerspec types
authorArnd Bergmann <arnd@arndb.de>
Fri, 21 Feb 2020 04:03:57 +0000 (20:03 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 21 Feb 2020 19:22:15 +0000 (11:22 -0800)
There are no in-kernel users remaining, but there may still be users that
include linux/time.h instead of sys/time.h from user space, so leave the
types available to user space while hiding them from kernel space.

Only the __kernel_old_* versions of these types remain now.

Link: http://lkml.kernel.org/r/20200110154232.4104492-4-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Deepa Dinamani <deepa.kernel@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/uapi/asm-generic/posix_types.h
include/uapi/linux/time.h

index 2f9c80595ba771e41767beb5d814b3204a39d332..b5f7594eee7ab26ced0d3041ffa04a2662a39818 100644 (file)
@@ -87,7 +87,9 @@ typedef struct {
 typedef __kernel_long_t        __kernel_off_t;
 typedef long long      __kernel_loff_t;
 typedef __kernel_long_t        __kernel_old_time_t;
+#ifndef __KERNEL__
 typedef __kernel_long_t        __kernel_time_t;
+#endif
 typedef long long __kernel_time64_t;
 typedef __kernel_long_t        __kernel_clock_t;
 typedef int            __kernel_timer_t;
index a655aa28dc6efcbf0da9a845bc1cbd09e47545e3..4f4b6e48e01c426560483c6c4277228334cbfddf 100644 (file)
@@ -5,6 +5,7 @@
 #include <linux/types.h>
 #include <linux/time_types.h>
 
+#ifndef __KERNEL__
 #ifndef _STRUCT_TIMESPEC
 #define _STRUCT_TIMESPEC
 struct timespec {
@@ -18,6 +19,17 @@ struct timeval {
        __kernel_suseconds_t    tv_usec;        /* microseconds */
 };
 
+struct itimerspec {
+       struct timespec it_interval;/* timer period */
+       struct timespec it_value;       /* timer expiration */
+};
+
+struct itimerval {
+       struct timeval it_interval;/* timer interval */
+       struct timeval it_value;        /* current value */
+};
+#endif
+
 struct timezone {
        int     tz_minuteswest; /* minutes west of Greenwich */
        int     tz_dsttime;     /* type of dst correction */
@@ -31,16 +43,6 @@ struct timezone {
 #define        ITIMER_VIRTUAL          1
 #define        ITIMER_PROF             2
 
-struct itimerspec {
-       struct timespec it_interval;    /* timer period */
-       struct timespec it_value;       /* timer expiration */
-};
-
-struct itimerval {
-       struct timeval it_interval;     /* timer interval */
-       struct timeval it_value;        /* current value */
-};
-
 /*
  * The IDs of the various system clocks (for POSIX.1b interval timers):
  */