diff options
author | Arnd Bergmann <arnd@arndb.de> | 2015-05-05 23:19:43 +0200 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2018-04-20 16:20:13 +0200 |
commit | d0b67de998025210c31bbceb79739df8e28a3d4f (patch) | |
tree | c64c8ae40810dc4f543707469b897d3902c91678 /arch/powerpc/include/uapi/asm/shmbuf.h | |
parent | y2038: sparc: Extend sysvipc data structures (diff) | |
download | linux-dev-d0b67de998025210c31bbceb79739df8e28a3d4f.tar.xz linux-dev-d0b67de998025210c31bbceb79739df8e28a3d4f.zip |
y2038: powerpc: Extend sysvipc data structures
powerpc, uses a nonstandard variation of the generic sysvipc
data structures, intended to have the padding moved around
so it can deal with big-endian 32-bit user space that has
64-bit time_t.
powerpc has the same definition as parisc and sparc, but now also
supports little-endian mode, which is now wrong because the
padding is made for big-endian user space.
This takes just take the same approach here that we have for
the asm-generic headers and adds separate 32-bit fields for the
upper halves of the timestamps, to let libc deal with the mess
in user space.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/powerpc/include/uapi/asm/shmbuf.h')
-rw-r--r-- | arch/powerpc/include/uapi/asm/shmbuf.h | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/arch/powerpc/include/uapi/asm/shmbuf.h b/arch/powerpc/include/uapi/asm/shmbuf.h index deb1c3e503d3..b591c4d7e4c5 100644 --- a/arch/powerpc/include/uapi/asm/shmbuf.h +++ b/arch/powerpc/include/uapi/asm/shmbuf.h @@ -16,25 +16,22 @@ * between kernel and user space. * * Pad space is left for: - * - 64-bit time_t to solve y2038 problem * - 2 miscellaneous 32-bit values */ struct shmid64_ds { struct ipc64_perm shm_perm; /* operation perms */ -#ifndef __powerpc64__ - unsigned long __unused1; -#endif +#ifdef __powerpc64__ __kernel_time_t shm_atime; /* last attach time */ -#ifndef __powerpc64__ - unsigned long __unused2; -#endif __kernel_time_t shm_dtime; /* last detach time */ -#ifndef __powerpc64__ - unsigned long __unused3; -#endif __kernel_time_t shm_ctime; /* last change time */ -#ifndef __powerpc64__ +#else + unsigned long shm_atime_high; + unsigned long shm_atime; /* last attach time */ + unsigned long shm_dtime_high; + unsigned long shm_dtime; /* last detach time */ + unsigned long shm_ctime_high; + unsigned long shm_ctime; /* last change time */ unsigned long __unused4; #endif size_t shm_segsz; /* size of segment (bytes) */ |