>From a632b2db9ccab7560ae6696fd6e4ca2a42024b7b Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 25 Dec 2013 07:55:28 -0800 Subject: [PATCH] Use __kernel_long_t in struct msgbuf X32 msgsnd/msgrcv system calls are the same as x86-64 msgsnd/msgrcv system calls, which use 64-bit integer for long in struct msgbuf . But x32 long is 32 bit. This patch replaces long in struct msgbuf with __kernel_long_t if __BITS_PER_LONG == 64. Signed-off-by: H.J. Lu --- include/uapi/linux/msg.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/uapi/linux/msg.h b/include/uapi/linux/msg.h index 22d95c6..6b6ec96 100644 --- a/include/uapi/linux/msg.h +++ b/include/uapi/linux/msg.h @@ -34,8 +34,12 @@ struct msqid_ds { /* message buffer for msgsnd and msgrcv calls */ struct msgbuf { - long mtype; /* type of message */ - char mtext[1]; /* message text */ +#if __BITS_PER_LONG == 64 + __kernel_long_t mtype; /* type of message */ +#else + long mtype; /* type of message */ +#endif + char mtext[1]; /* message text */ }; /* buffer for msgctl calls IPC_INFO, MSG_INFO */ -- 1.8.4.2