On Wed, Dec 25, 2013 at 07:45:41AM -0800, H.J. Lu wrote: > X32 IPC system call is the same as x86-64 IPC system call, which uses > 64-bit integer for unsigned long in struct ipc64_perm. But x32 long is > 32 bit. This patch replaces unsigned long in uapi struct ipc64_perm with > __kernel_ulong_t. >
Here is the updated patch which uses __kernel_ulong_t only if __BITS_PER_LONG == 64. H.J.
>From 81b4c3c55f994d54eafcaf4adaa2a16786c41fdd Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.to...@gmail.com> Date: Wed, 25 Dec 2013 07:13:02 -0800 Subject: [PATCH] Use __kernel_ulong_t in uapi struct ipc64_perm X32 IPC system call is the same as x86-64 IPC system call, which uses 64-bit integer for unsigned long in struct ipc64_perm. But x32 long is 32 bit. This patch replaces unsigned long in uapi struct ipc64_perm with __kernel_ulong_t if __BITS_PER_LONG == 64. Signed-off-by: H.J. Lu <hjl.to...@gmail.com> --- include/uapi/asm-generic/ipcbuf.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/uapi/asm-generic/ipcbuf.h b/include/uapi/asm-generic/ipcbuf.h index 76982b2..4635fa5 100644 --- a/include/uapi/asm-generic/ipcbuf.h +++ b/include/uapi/asm-generic/ipcbuf.h @@ -27,8 +27,13 @@ struct ipc64_perm { unsigned char __pad1[4 - sizeof(__kernel_mode_t)]; unsigned short seq; unsigned short __pad2; +#if __BITS_PER_LONG == 64 + __kernel_ulong_t __unused1; + __kernel_ulong_t __unused2; +#else unsigned long __unused1; unsigned long __unused2; +#endif }; #endif /* __ASM_GENERIC_IPCBUF_H */ -- 1.8.4.2