y2038: ipc: remove __kernel_time_t reference from headers
authorArnd Bergmann <arnd@arndb.de>
Mon, 4 Nov 2019 20:17:26 +0000 (21:17 +0100)
committerArnd Bergmann <arnd@arndb.de>
Fri, 15 Nov 2019 13:38:28 +0000 (14:38 +0100)
There are two structures based on time_t that conflict between libc and
kernel: timeval and timespec. Both are now renamed to __kernel_old_timeval
and __kernel_old_timespec.

For time_t, the old typedef is still __kernel_time_t. There is nothing
wrong with that name, but it would be nice to not use that going forward
as this type is used almost only in deprecated interfaces because of
the y2038 overflow.

In the IPC headers (msgbuf.h, sembuf.h, shmbuf.h), __kernel_time_t is only
used for the 64-bit variants, which are not deprecated.

Change these to a plain 'long', which is the same type as __kernel_time_t
on all 64-bit architectures anyway, to reduce the number of users of the
old type.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
18 files changed:
arch/mips/include/uapi/asm/msgbuf.h
arch/mips/include/uapi/asm/sembuf.h
arch/mips/include/uapi/asm/shmbuf.h
arch/parisc/include/uapi/asm/msgbuf.h
arch/parisc/include/uapi/asm/sembuf.h
arch/parisc/include/uapi/asm/shmbuf.h
arch/powerpc/include/uapi/asm/msgbuf.h
arch/powerpc/include/uapi/asm/sembuf.h
arch/powerpc/include/uapi/asm/shmbuf.h
arch/sparc/include/uapi/asm/msgbuf.h
arch/sparc/include/uapi/asm/sembuf.h
arch/sparc/include/uapi/asm/shmbuf.h
arch/x86/include/uapi/asm/msgbuf.h
arch/x86/include/uapi/asm/sembuf.h
arch/x86/include/uapi/asm/shmbuf.h
include/uapi/asm-generic/msgbuf.h
include/uapi/asm-generic/sembuf.h
include/uapi/asm-generic/shmbuf.h

index 46aa15b13e4e33cd3de7a07f079f3e3bb217f95d..9e0c2e2302746512b0622ee079f21fdf058507d6 100644 (file)
@@ -15,9 +15,9 @@
 #if defined(__mips64)
 struct msqid64_ds {
        struct ipc64_perm msg_perm;
-       __kernel_time_t msg_stime;      /* last msgsnd time */
-       __kernel_time_t msg_rtime;      /* last msgrcv time */
-       __kernel_time_t msg_ctime;      /* last change time */
+       long msg_stime;                 /* last msgsnd time */
+       long msg_rtime;                 /* last msgrcv time */
+       long msg_ctime;                 /* last change time */
        unsigned long  msg_cbytes;      /* current number of bytes on queue */
        unsigned long  msg_qnum;        /* number of messages in queue */
        unsigned long  msg_qbytes;      /* max number of bytes on queue */
index 60c89e6cb25b79a3b8b4171a32631b18355af099..43e1b4a2f68a980cc2839b5df993cb7506b7c2ca 100644 (file)
@@ -14,8 +14,8 @@
 #ifdef __mips64
 struct semid64_ds {
        struct ipc64_perm sem_perm;             /* permissions .. see ipc.h */
-       __kernel_time_t sem_otime;              /* last semop time */
-       __kernel_time_t sem_ctime;              /* last change time */
+       long             sem_otime;             /* last semop time */
+       long             sem_ctime;             /* last change time */
        unsigned long   sem_nsems;              /* no. of semaphores in array */
        unsigned long   __unused1;
        unsigned long   __unused2;
index 9b9bba3401f212a8f5c0fad488a898757353d611..680bb95b2240aaa6dd5ade82ceb5b7b6d19b4242 100644 (file)
@@ -17,9 +17,9 @@
 struct shmid64_ds {
        struct ipc64_perm       shm_perm;       /* operation perms */
        size_t                  shm_segsz;      /* size of segment (bytes) */
-       __kernel_time_t         shm_atime;      /* last attach time */
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       __kernel_time_t         shm_ctime;      /* last change time */
+       long                    shm_atime;      /* last attach time */
+       long                    shm_dtime;      /* last detach time */
+       long                    shm_ctime;      /* last change time */
        __kernel_pid_t          shm_cpid;       /* pid of creator */
        __kernel_pid_t          shm_lpid;       /* pid of last operator */
        unsigned long           shm_nattch;     /* no. of current attaches */
index 6a2e9ab2ef8d44a7de33c2d63b40b76075cc343d..3b877335da380e845a5ab42f328cab5905b87743 100644 (file)
@@ -16,9 +16,9 @@
 struct msqid64_ds {
        struct ipc64_perm msg_perm;
 #if __BITS_PER_LONG == 64
-       __kernel_time_t msg_stime;      /* last msgsnd time */
-       __kernel_time_t msg_rtime;      /* last msgrcv time */
-       __kernel_time_t msg_ctime;      /* last change time */
+       long             msg_stime;     /* last msgsnd time */
+       long             msg_rtime;     /* last msgrcv time */
+       long             msg_ctime;     /* last change time */
 #else
        unsigned long   msg_stime_high;
        unsigned long   msg_stime;      /* last msgsnd time */
index 3c31163b1241d88194f97ef41bd33d1f8bd50473..8241cf1260186c77bd26824804ddaedd0b878af7 100644 (file)
@@ -16,8 +16,8 @@
 struct semid64_ds {
        struct ipc64_perm sem_perm;             /* permissions .. see ipc.h */
 #if __BITS_PER_LONG == 64
-       __kernel_time_t sem_otime;              /* last semop time */
-       __kernel_time_t sem_ctime;              /* last change time */
+       long            sem_otime;              /* last semop time */
+       long            sem_ctime;              /* last change time */
 #else
        unsigned long   sem_otime_high;
        unsigned long   sem_otime;              /* last semop time */
index c89b3dd8db21b229abb425256387ee7534763f0d..5da3089be65ec537d4cc377e2b10d210ed7aa713 100644 (file)
@@ -16,9 +16,9 @@
 struct shmid64_ds {
        struct ipc64_perm       shm_perm;       /* operation perms */
 #if __BITS_PER_LONG == 64
-       __kernel_time_t         shm_atime;      /* last attach time */
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       __kernel_time_t         shm_ctime;      /* last change time */
+       long                    shm_atime;      /* last attach time */
+       long                    shm_dtime;      /* last detach time */
+       long                    shm_ctime;      /* last change time */
 #else
        unsigned long           shm_atime_high;
        unsigned long           shm_atime;      /* last attach time */
index 2b1b37797a47b5bde99a57b19b14cf82640c101d..969bd83e4d3d5eeec30eeff809427f03ce4f10e1 100644 (file)
@@ -11,9 +11,9 @@
 struct msqid64_ds {
        struct ipc64_perm msg_perm;
 #ifdef __powerpc64__
-       __kernel_time_t msg_stime;      /* last msgsnd time */
-       __kernel_time_t msg_rtime;      /* last msgrcv time */
-       __kernel_time_t msg_ctime;      /* last change time */
+       long             msg_stime;     /* last msgsnd time */
+       long             msg_rtime;     /* last msgrcv time */
+       long             msg_ctime;     /* last change time */
 #else
        unsigned long  msg_stime_high;
        unsigned long  msg_stime;       /* last msgsnd time */
index 3f60946f77e31a908138a1c01e310114cd0deff6..008ae77c6746c4a2aa0c3dcc5639b5bc184dd8dd 100644 (file)
@@ -26,8 +26,8 @@ struct semid64_ds {
        unsigned long   sem_ctime_high;
        unsigned long   sem_ctime;      /* last change time */
 #else
-       __kernel_time_t sem_otime;      /* last semop time */
-       __kernel_time_t sem_ctime;      /* last change time */
+       long            sem_otime;      /* last semop time */
+       long            sem_ctime;      /* last change time */
 #endif
        unsigned long   sem_nsems;      /* no. of semaphores in array */
        unsigned long   __unused3;
index b591c4d7e4c53019c5859314db8d8cf5385e9d8f..00422b2f3c63e72ac8abd3ca92485fa12e2f566c 100644 (file)
@@ -22,9 +22,9 @@
 struct shmid64_ds {
        struct ipc64_perm       shm_perm;       /* operation perms */
 #ifdef __powerpc64__
-       __kernel_time_t         shm_atime;      /* last attach time */
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       __kernel_time_t         shm_ctime;      /* last change time */
+       long            shm_atime;      /* last attach time */
+       long            shm_dtime;      /* last detach time */
+       long            shm_ctime;      /* last change time */
 #else
        unsigned long           shm_atime_high;
        unsigned long           shm_atime;      /* last attach time */
index ffc46c211d6d9be2b35b235646282664dde6df34..eeeb9193328003177f155b950b13633f1d7f18da 100644 (file)
@@ -13,9 +13,9 @@
 struct msqid64_ds {
        struct ipc64_perm msg_perm;
 #if defined(__sparc__) && defined(__arch64__)
-       __kernel_time_t msg_stime;      /* last msgsnd time */
-       __kernel_time_t msg_rtime;      /* last msgrcv time */
-       __kernel_time_t msg_ctime;      /* last change time */
+       long msg_stime;                 /* last msgsnd time */
+       long msg_rtime;                 /* last msgrcv time */
+       long msg_ctime;                 /* last change time */
 #else
        unsigned long msg_stime_high;
        unsigned long msg_stime;        /* last msgsnd time */
index f3d309c2e1cdcb19af1575dada72e699ee48ac74..cbcbaa4e7128097d7c6baf9bc0853a495189e31a 100644 (file)
@@ -14,8 +14,8 @@
 struct semid64_ds {
        struct ipc64_perm sem_perm;             /* permissions .. see ipc.h */
 #if defined(__sparc__) && defined(__arch64__)
-       __kernel_time_t sem_otime;              /* last semop time */
-       __kernel_time_t sem_ctime;              /* last change time */
+       long            sem_otime;              /* last semop time */
+       long            sem_ctime;              /* last change time */
 #else
        unsigned long   sem_otime_high;
        unsigned long   sem_otime;              /* last semop time */
index 06618b84822dc7a112dc25929605ff87d2a0d592..a5d7d8d681c41446e6d087ed24b12447456aa7d6 100644 (file)
@@ -14,9 +14,9 @@
 struct shmid64_ds {
        struct ipc64_perm       shm_perm;       /* operation perms */
 #if defined(__sparc__) && defined(__arch64__)
-       __kernel_time_t         shm_atime;      /* last attach time */
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       __kernel_time_t         shm_ctime;      /* last change time */
+       long                    shm_atime;      /* last attach time */
+       long                    shm_dtime;      /* last detach time */
+       long                    shm_ctime;      /* last change time */
 #else
        unsigned long           shm_atime_high;
        unsigned long           shm_atime;      /* last attach time */
index 90ab9a795b49329b5d06cdb45e15cb800a04ff63..7c5bb43ed8af700499330ca3d5788f5ead73c20f 100644 (file)
@@ -15,9 +15,9 @@
 
 struct msqid64_ds {
        struct ipc64_perm msg_perm;
-       __kernel_time_t msg_stime;      /* last msgsnd time */
-       __kernel_time_t msg_rtime;      /* last msgrcv time */
-       __kernel_time_t msg_ctime;      /* last change time */
+       __kernel_long_t msg_stime;      /* last msgsnd time */
+       __kernel_long_t msg_rtime;      /* last msgrcv time */
+       __kernel_long_t msg_ctime;      /* last change time */
        __kernel_ulong_t msg_cbytes;    /* current number of bytes on queue */
        __kernel_ulong_t msg_qnum;      /* number of messages in queue */
        __kernel_ulong_t msg_qbytes;    /* max number of bytes on queue */
index 89de6cd9f0a778408600d51849caa3ee8971f93a..7c1b156695ba33ccd15b5ddf56aef42c7b49ea57 100644 (file)
@@ -21,9 +21,9 @@ struct semid64_ds {
        unsigned long   sem_ctime;      /* last change time */
        unsigned long   sem_ctime_high;
 #else
-       __kernel_time_t sem_otime;      /* last semop time */
+       long            sem_otime;      /* last semop time */
        __kernel_ulong_t __unused1;
-       __kernel_time_t sem_ctime;      /* last change time */
+       long            sem_ctime;      /* last change time */
        __kernel_ulong_t __unused2;
 #endif
        __kernel_ulong_t sem_nsems;     /* no. of semaphores in array */
index 644421f3823beefb16ddc83979fbdf01c15c6a7a..f0305dc660c9a92338272dbfe40712519b123682 100644 (file)
@@ -16,9 +16,9 @@
 struct shmid64_ds {
        struct ipc64_perm       shm_perm;       /* operation perms */
        size_t                  shm_segsz;      /* size of segment (bytes) */
-       __kernel_time_t         shm_atime;      /* last attach time */
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       __kernel_time_t         shm_ctime;      /* last change time */
+       __kernel_long_t         shm_atime;      /* last attach time */
+       __kernel_long_t         shm_dtime;      /* last detach time */
+       __kernel_long_t         shm_ctime;      /* last change time */
        __kernel_pid_t          shm_cpid;       /* pid of creator */
        __kernel_pid_t          shm_lpid;       /* pid of last operator */
        __kernel_ulong_t        shm_nattch;     /* no. of current attaches */
index 9fe4881557cbd7e43baa22c956d03cb962b6ff35..af95aa89012ec0653dfdf7bf7c1fcde7fc5ee3ff 100644 (file)
@@ -13,9 +13,9 @@
  * everyone just ended up making identical copies without specific
  * optimizations, so we may just as well all use the same one.
  *
- * 64 bit architectures typically define a 64 bit __kernel_time_t,
- * so they do not need the first three padding words.
- * On big-endian systems, the padding is in the wrong place.
+ * 64 bit architectures use a 64-bit long time field here, while
+ * 32 bit architectures have a pair of unsigned long values.
+ * On big-endian systems, the lower half is in the wrong place.
  *
  * Pad space is left for:
  * - 2 miscellaneous 32-bit values
@@ -24,9 +24,9 @@
 struct msqid64_ds {
        struct ipc64_perm msg_perm;
 #if __BITS_PER_LONG == 64
-       __kernel_time_t msg_stime;      /* last msgsnd time */
-       __kernel_time_t msg_rtime;      /* last msgrcv time */
-       __kernel_time_t msg_ctime;      /* last change time */
+       long             msg_stime;     /* last msgsnd time */
+       long             msg_rtime;     /* last msgrcv time */
+       long             msg_ctime;     /* last change time */
 #else
        unsigned long   msg_stime;      /* last msgsnd time */
        unsigned long   msg_stime_high;
index 0bae010f1b64fb36086b31e993e99c6f7a738db6..137606018c6aafe51215b9509b969d695c3056e6 100644 (file)
@@ -13,9 +13,8 @@
  * everyone just ended up making identical copies without specific
  * optimizations, so we may just as well all use the same one.
  *
- * 64 bit architectures use a 64-bit __kernel_time_t here, while
+ * 64 bit architectures use a 64-bit long time field here, while
  * 32 bit architectures have a pair of unsigned long values.
- * so they do not need the first two padding words.
  *
  * On big-endian systems, the padding is in the wrong place for
  * historic reasons, so user space has to reconstruct a time_t
@@ -29,8 +28,8 @@
 struct semid64_ds {
        struct ipc64_perm sem_perm;     /* permissions .. see ipc.h */
 #if __BITS_PER_LONG == 64
-       __kernel_time_t sem_otime;      /* last semop time */
-       __kernel_time_t sem_ctime;      /* last change time */
+       long            sem_otime;      /* last semop time */
+       long            sem_ctime;      /* last change time */
 #else
        unsigned long   sem_otime;      /* last semop time */
        unsigned long   sem_otime_high;
index e504422fc501732a758843f15e431e476ba54dcd..2bab955e0fed6a3166e33b2bed49ed3415748497 100644 (file)
@@ -13,9 +13,9 @@
  * everyone just ended up making identical copies without specific
  * optimizations, so we may just as well all use the same one.
  *
- * 64 bit architectures typically define a 64 bit __kernel_time_t,
- * so they do not need the first two padding words.
- * On big-endian systems, the padding is in the wrong place.
+ * 64 bit architectures use a 64-bit long time field here, while
+ * 32 bit architectures have a pair of unsigned long values.
+ * On big-endian systems, the lower half is in the wrong place.
  *
  *
  * Pad space is left for:
@@ -26,9 +26,9 @@ struct shmid64_ds {
        struct ipc64_perm       shm_perm;       /* operation perms */
        size_t                  shm_segsz;      /* size of segment (bytes) */
 #if __BITS_PER_LONG == 64
-       __kernel_time_t         shm_atime;      /* last attach time */
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       __kernel_time_t         shm_ctime;      /* last change time */
+       long                    shm_atime;      /* last attach time */
+       long                    shm_dtime;      /* last detach time */
+       long                    shm_ctime;      /* last change time */
 #else
        unsigned long           shm_atime;      /* last attach time */
        unsigned long           shm_atime_high;