Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83335eb4 authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

y2038: arm64: Extend sysvipc compat data structures



Both 32-bit amd 64-bit ARM use the asm-generic header files for their
sysvipc data structures, so no special care is needed to make those
work beyond y2038, with the one exception of compat mode: Since there
is no asm-generic definition of the compat mode IPC structures, ARM64
provides its own copy, and we make those match the changes in the native
asm-generic header files.

There is sufficient padding in these data structures to extend all
timestamps to 64 bit, but on big-endian ARM kernels, the padding
is in the wrong place, so the C library has to ensure it reassembles
a 64-bit time_t correctly.

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 26293b31
Loading
Loading
Loading
Loading
+16 −16
Original line number Original line Diff line number Diff line
@@ -181,10 +181,10 @@ struct compat_ipc64_perm {


struct compat_semid64_ds {
struct compat_semid64_ds {
	struct compat_ipc64_perm sem_perm;
	struct compat_ipc64_perm sem_perm;
	compat_time_t  sem_otime;
	compat_ulong_t sem_otime;
	compat_ulong_t __unused1;
	compat_ulong_t sem_otime_high;
	compat_time_t  sem_ctime;
	compat_ulong_t sem_ctime;
	compat_ulong_t __unused2;
	compat_ulong_t sem_ctime_high;
	compat_ulong_t sem_nsems;
	compat_ulong_t sem_nsems;
	compat_ulong_t __unused3;
	compat_ulong_t __unused3;
	compat_ulong_t __unused4;
	compat_ulong_t __unused4;
@@ -192,12 +192,12 @@ struct compat_semid64_ds {


struct compat_msqid64_ds {
struct compat_msqid64_ds {
	struct compat_ipc64_perm msg_perm;
	struct compat_ipc64_perm msg_perm;
	compat_time_t  msg_stime;
	compat_ulong_t msg_stime;
	compat_ulong_t __unused1;
	compat_ulong_t msg_stime_high;
	compat_time_t  msg_rtime;
	compat_ulong_t msg_rtime;
	compat_ulong_t __unused2;
	compat_ulong_t msg_rtime_high;
	compat_time_t  msg_ctime;
	compat_ulong_t msg_ctime;
	compat_ulong_t __unused3;
	compat_ulong_t msg_ctime_high;
	compat_ulong_t msg_cbytes;
	compat_ulong_t msg_cbytes;
	compat_ulong_t msg_qnum;
	compat_ulong_t msg_qnum;
	compat_ulong_t msg_qbytes;
	compat_ulong_t msg_qbytes;
@@ -210,12 +210,12 @@ struct compat_msqid64_ds {
struct compat_shmid64_ds {
struct compat_shmid64_ds {
	struct compat_ipc64_perm shm_perm;
	struct compat_ipc64_perm shm_perm;
	compat_size_t  shm_segsz;
	compat_size_t  shm_segsz;
	compat_time_t  shm_atime;
	compat_ulong_t shm_atime;
	compat_ulong_t __unused1;
	compat_ulong_t shm_atime_high;
	compat_time_t  shm_dtime;
	compat_ulong_t shm_dtime;
	compat_ulong_t __unused2;
	compat_ulong_t shm_dtime_high;
	compat_time_t  shm_ctime;
	compat_ulong_t shm_ctime;
	compat_ulong_t __unused3;
	compat_ulong_t shm_ctime_high;
	compat_pid_t   shm_cpid;
	compat_pid_t   shm_cpid;
	compat_pid_t   shm_lpid;
	compat_pid_t   shm_lpid;
	compat_ulong_t shm_nattch;
	compat_ulong_t shm_nattch;