Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

y2038: ipc: remove __kernel_time_t reference from headers

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>

+55 -56
+3 -3
arch/mips/include/uapi/asm/msgbuf.h
··· 15 15 #if defined(__mips64) 16 16 struct msqid64_ds { 17 17 struct ipc64_perm msg_perm; 18 - __kernel_time_t msg_stime; /* last msgsnd time */ 19 - __kernel_time_t msg_rtime; /* last msgrcv time */ 20 - __kernel_time_t msg_ctime; /* last change time */ 18 + long msg_stime; /* last msgsnd time */ 19 + long msg_rtime; /* last msgrcv time */ 20 + long msg_ctime; /* last change time */ 21 21 unsigned long msg_cbytes; /* current number of bytes on queue */ 22 22 unsigned long msg_qnum; /* number of messages in queue */ 23 23 unsigned long msg_qbytes; /* max number of bytes on queue */
+2 -2
arch/mips/include/uapi/asm/sembuf.h
··· 14 14 #ifdef __mips64 15 15 struct semid64_ds { 16 16 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ 17 - __kernel_time_t sem_otime; /* last semop time */ 18 - __kernel_time_t sem_ctime; /* last change time */ 17 + long sem_otime; /* last semop time */ 18 + long sem_ctime; /* last change time */ 19 19 unsigned long sem_nsems; /* no. of semaphores in array */ 20 20 unsigned long __unused1; 21 21 unsigned long __unused2;
+3 -3
arch/mips/include/uapi/asm/shmbuf.h
··· 17 17 struct shmid64_ds { 18 18 struct ipc64_perm shm_perm; /* operation perms */ 19 19 size_t shm_segsz; /* size of segment (bytes) */ 20 - __kernel_time_t shm_atime; /* last attach time */ 21 - __kernel_time_t shm_dtime; /* last detach time */ 22 - __kernel_time_t shm_ctime; /* last change time */ 20 + long shm_atime; /* last attach time */ 21 + long shm_dtime; /* last detach time */ 22 + long shm_ctime; /* last change time */ 23 23 __kernel_pid_t shm_cpid; /* pid of creator */ 24 24 __kernel_pid_t shm_lpid; /* pid of last operator */ 25 25 unsigned long shm_nattch; /* no. of current attaches */
+3 -3
arch/parisc/include/uapi/asm/msgbuf.h
··· 16 16 struct msqid64_ds { 17 17 struct ipc64_perm msg_perm; 18 18 #if __BITS_PER_LONG == 64 19 - __kernel_time_t msg_stime; /* last msgsnd time */ 20 - __kernel_time_t msg_rtime; /* last msgrcv time */ 21 - __kernel_time_t msg_ctime; /* last change time */ 19 + long msg_stime; /* last msgsnd time */ 20 + long msg_rtime; /* last msgrcv time */ 21 + long msg_ctime; /* last change time */ 22 22 #else 23 23 unsigned long msg_stime_high; 24 24 unsigned long msg_stime; /* last msgsnd time */
+2 -2
arch/parisc/include/uapi/asm/sembuf.h
··· 16 16 struct semid64_ds { 17 17 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ 18 18 #if __BITS_PER_LONG == 64 19 - __kernel_time_t sem_otime; /* last semop time */ 20 - __kernel_time_t sem_ctime; /* last change time */ 19 + long sem_otime; /* last semop time */ 20 + long sem_ctime; /* last change time */ 21 21 #else 22 22 unsigned long sem_otime_high; 23 23 unsigned long sem_otime; /* last semop time */
+3 -3
arch/parisc/include/uapi/asm/shmbuf.h
··· 16 16 struct shmid64_ds { 17 17 struct ipc64_perm shm_perm; /* operation perms */ 18 18 #if __BITS_PER_LONG == 64 19 - __kernel_time_t shm_atime; /* last attach time */ 20 - __kernel_time_t shm_dtime; /* last detach time */ 21 - __kernel_time_t shm_ctime; /* last change time */ 19 + long shm_atime; /* last attach time */ 20 + long shm_dtime; /* last detach time */ 21 + long shm_ctime; /* last change time */ 22 22 #else 23 23 unsigned long shm_atime_high; 24 24 unsigned long shm_atime; /* last attach time */
+3 -3
arch/powerpc/include/uapi/asm/msgbuf.h
··· 11 11 struct msqid64_ds { 12 12 struct ipc64_perm msg_perm; 13 13 #ifdef __powerpc64__ 14 - __kernel_time_t msg_stime; /* last msgsnd time */ 15 - __kernel_time_t msg_rtime; /* last msgrcv time */ 16 - __kernel_time_t msg_ctime; /* last change time */ 14 + long msg_stime; /* last msgsnd time */ 15 + long msg_rtime; /* last msgrcv time */ 16 + long msg_ctime; /* last change time */ 17 17 #else 18 18 unsigned long msg_stime_high; 19 19 unsigned long msg_stime; /* last msgsnd time */
+2 -2
arch/powerpc/include/uapi/asm/sembuf.h
··· 26 26 unsigned long sem_ctime_high; 27 27 unsigned long sem_ctime; /* last change time */ 28 28 #else 29 - __kernel_time_t sem_otime; /* last semop time */ 30 - __kernel_time_t sem_ctime; /* last change time */ 29 + long sem_otime; /* last semop time */ 30 + long sem_ctime; /* last change time */ 31 31 #endif 32 32 unsigned long sem_nsems; /* no. of semaphores in array */ 33 33 unsigned long __unused3;
+3 -3
arch/powerpc/include/uapi/asm/shmbuf.h
··· 22 22 struct shmid64_ds { 23 23 struct ipc64_perm shm_perm; /* operation perms */ 24 24 #ifdef __powerpc64__ 25 - __kernel_time_t shm_atime; /* last attach time */ 26 - __kernel_time_t shm_dtime; /* last detach time */ 27 - __kernel_time_t shm_ctime; /* last change time */ 25 + long shm_atime; /* last attach time */ 26 + long shm_dtime; /* last detach time */ 27 + long shm_ctime; /* last change time */ 28 28 #else 29 29 unsigned long shm_atime_high; 30 30 unsigned long shm_atime; /* last attach time */
+3 -3
arch/sparc/include/uapi/asm/msgbuf.h
··· 13 13 struct msqid64_ds { 14 14 struct ipc64_perm msg_perm; 15 15 #if defined(__sparc__) && defined(__arch64__) 16 - __kernel_time_t msg_stime; /* last msgsnd time */ 17 - __kernel_time_t msg_rtime; /* last msgrcv time */ 18 - __kernel_time_t msg_ctime; /* last change time */ 16 + long msg_stime; /* last msgsnd time */ 17 + long msg_rtime; /* last msgrcv time */ 18 + long msg_ctime; /* last change time */ 19 19 #else 20 20 unsigned long msg_stime_high; 21 21 unsigned long msg_stime; /* last msgsnd time */
+2 -2
arch/sparc/include/uapi/asm/sembuf.h
··· 14 14 struct semid64_ds { 15 15 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ 16 16 #if defined(__sparc__) && defined(__arch64__) 17 - __kernel_time_t sem_otime; /* last semop time */ 18 - __kernel_time_t sem_ctime; /* last change time */ 17 + long sem_otime; /* last semop time */ 18 + long sem_ctime; /* last change time */ 19 19 #else 20 20 unsigned long sem_otime_high; 21 21 unsigned long sem_otime; /* last semop time */
+3 -3
arch/sparc/include/uapi/asm/shmbuf.h
··· 14 14 struct shmid64_ds { 15 15 struct ipc64_perm shm_perm; /* operation perms */ 16 16 #if defined(__sparc__) && defined(__arch64__) 17 - __kernel_time_t shm_atime; /* last attach time */ 18 - __kernel_time_t shm_dtime; /* last detach time */ 19 - __kernel_time_t shm_ctime; /* last change time */ 17 + long shm_atime; /* last attach time */ 18 + long shm_dtime; /* last detach time */ 19 + long shm_ctime; /* last change time */ 20 20 #else 21 21 unsigned long shm_atime_high; 22 22 unsigned long shm_atime; /* last attach time */
+3 -3
arch/x86/include/uapi/asm/msgbuf.h
··· 15 15 16 16 struct msqid64_ds { 17 17 struct ipc64_perm msg_perm; 18 - __kernel_time_t msg_stime; /* last msgsnd time */ 19 - __kernel_time_t msg_rtime; /* last msgrcv time */ 20 - __kernel_time_t msg_ctime; /* last change time */ 18 + __kernel_long_t msg_stime; /* last msgsnd time */ 19 + __kernel_long_t msg_rtime; /* last msgrcv time */ 20 + __kernel_long_t msg_ctime; /* last change time */ 21 21 __kernel_ulong_t msg_cbytes; /* current number of bytes on queue */ 22 22 __kernel_ulong_t msg_qnum; /* number of messages in queue */ 23 23 __kernel_ulong_t msg_qbytes; /* max number of bytes on queue */
+2 -2
arch/x86/include/uapi/asm/sembuf.h
··· 21 21 unsigned long sem_ctime; /* last change time */ 22 22 unsigned long sem_ctime_high; 23 23 #else 24 - __kernel_time_t sem_otime; /* last semop time */ 24 + long sem_otime; /* last semop time */ 25 25 __kernel_ulong_t __unused1; 26 - __kernel_time_t sem_ctime; /* last change time */ 26 + long sem_ctime; /* last change time */ 27 27 __kernel_ulong_t __unused2; 28 28 #endif 29 29 __kernel_ulong_t sem_nsems; /* no. of semaphores in array */
+3 -3
arch/x86/include/uapi/asm/shmbuf.h
··· 16 16 struct shmid64_ds { 17 17 struct ipc64_perm shm_perm; /* operation perms */ 18 18 size_t shm_segsz; /* size of segment (bytes) */ 19 - __kernel_time_t shm_atime; /* last attach time */ 20 - __kernel_time_t shm_dtime; /* last detach time */ 21 - __kernel_time_t shm_ctime; /* last change time */ 19 + __kernel_long_t shm_atime; /* last attach time */ 20 + __kernel_long_t shm_dtime; /* last detach time */ 21 + __kernel_long_t shm_ctime; /* last change time */ 22 22 __kernel_pid_t shm_cpid; /* pid of creator */ 23 23 __kernel_pid_t shm_lpid; /* pid of last operator */ 24 24 __kernel_ulong_t shm_nattch; /* no. of current attaches */
+6 -6
include/uapi/asm-generic/msgbuf.h
··· 13 13 * everyone just ended up making identical copies without specific 14 14 * optimizations, so we may just as well all use the same one. 15 15 * 16 - * 64 bit architectures typically define a 64 bit __kernel_time_t, 17 - * so they do not need the first three padding words. 18 - * On big-endian systems, the padding is in the wrong place. 16 + * 64 bit architectures use a 64-bit long time field here, while 17 + * 32 bit architectures have a pair of unsigned long values. 18 + * On big-endian systems, the lower half is in the wrong place. 19 19 * 20 20 * Pad space is left for: 21 21 * - 2 miscellaneous 32-bit values ··· 24 24 struct msqid64_ds { 25 25 struct ipc64_perm msg_perm; 26 26 #if __BITS_PER_LONG == 64 27 - __kernel_time_t msg_stime; /* last msgsnd time */ 28 - __kernel_time_t msg_rtime; /* last msgrcv time */ 29 - __kernel_time_t msg_ctime; /* last change time */ 27 + long msg_stime; /* last msgsnd time */ 28 + long msg_rtime; /* last msgrcv time */ 29 + long msg_ctime; /* last change time */ 30 30 #else 31 31 unsigned long msg_stime; /* last msgsnd time */ 32 32 unsigned long msg_stime_high;
+3 -4
include/uapi/asm-generic/sembuf.h
··· 13 13 * everyone just ended up making identical copies without specific 14 14 * optimizations, so we may just as well all use the same one. 15 15 * 16 - * 64 bit architectures use a 64-bit __kernel_time_t here, while 16 + * 64 bit architectures use a 64-bit long time field here, while 17 17 * 32 bit architectures have a pair of unsigned long values. 18 - * so they do not need the first two padding words. 19 18 * 20 19 * On big-endian systems, the padding is in the wrong place for 21 20 * historic reasons, so user space has to reconstruct a time_t ··· 28 29 struct semid64_ds { 29 30 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ 30 31 #if __BITS_PER_LONG == 64 31 - __kernel_time_t sem_otime; /* last semop time */ 32 - __kernel_time_t sem_ctime; /* last change time */ 32 + long sem_otime; /* last semop time */ 33 + long sem_ctime; /* last change time */ 33 34 #else 34 35 unsigned long sem_otime; /* last semop time */ 35 36 unsigned long sem_otime_high;
+6 -6
include/uapi/asm-generic/shmbuf.h
··· 13 13 * everyone just ended up making identical copies without specific 14 14 * optimizations, so we may just as well all use the same one. 15 15 * 16 - * 64 bit architectures typically define a 64 bit __kernel_time_t, 17 - * so they do not need the first two padding words. 18 - * On big-endian systems, the padding is in the wrong place. 16 + * 64 bit architectures use a 64-bit long time field here, while 17 + * 32 bit architectures have a pair of unsigned long values. 18 + * On big-endian systems, the lower half is in the wrong place. 19 19 * 20 20 * 21 21 * Pad space is left for: ··· 26 26 struct ipc64_perm shm_perm; /* operation perms */ 27 27 size_t shm_segsz; /* size of segment (bytes) */ 28 28 #if __BITS_PER_LONG == 64 29 - __kernel_time_t shm_atime; /* last attach time */ 30 - __kernel_time_t shm_dtime; /* last detach time */ 31 - __kernel_time_t shm_ctime; /* last change time */ 29 + long shm_atime; /* last attach time */ 30 + long shm_dtime; /* last detach time */ 31 + long shm_ctime; /* last change time */ 32 32 #else 33 33 unsigned long shm_atime; /* last attach time */ 34 34 unsigned long shm_atime_high;