On Sun, Aug 06, 2017 at 06:43:59PM +0200, Mikko Rapeli wrote:
> Include linux/types.h and asm/msgbuf.h and use __kernel_size_t instead
> of size_t.
> 
> Fixes userspace compilation errors like:
> 
> error: field ‘shm_perm’ has incomplete type
> struct ipc64_perm shm_perm; /* operation perms */
> error: unknown type name ‘size_t’
> error: unknown type name ‘__kernel_time_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rap...@iki.fi>
> Acked-by: Arnd Bergmann <a...@arndb.de>
> Cc: H.J. Lu <hjl.to...@gmail.com>
> Cc: H. Peter Anvin <h...@zytor.com>
> ---
>  include/uapi/asm-generic/shmbuf.h | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/include/uapi/asm-generic/shmbuf.h 
> b/include/uapi/asm-generic/shmbuf.h
> index 7e9fb2f0853b..ae867ad1e5e4 100644
> --- a/include/uapi/asm-generic/shmbuf.h
> +++ b/include/uapi/asm-generic/shmbuf.h
> @@ -1,7 +1,9 @@
>  #ifndef __ASM_GENERIC_SHMBUF_H
>  #define __ASM_GENERIC_SHMBUF_H
>  
> +#include <linux/types.h>
>  #include <asm/bitsperlong.h>
> +#include <asm/msgbuf.h>
>  
>  /*
>   * The shmid64_ds structure for x86 architecture.
> @@ -24,7 +26,7 @@
>  
>  struct shmid64_ds {
>       struct ipc64_perm       shm_perm;       /* operation perms */
> -     size_t                  shm_segsz;      /* size of segment (bytes) */
> +     __kernel_size_t         shm_segsz;      /* size of segment (bytes) */
>       __kernel_time_t         shm_atime;      /* last attach time */
>  #if __BITS_PER_LONG != 64
>       unsigned long           __unused1;

Surprisingly enough, this replacement of size_t with __kernel_size_t
is not just correct, it's a fix for a more subtle bug on x32, see
http://lkml.kernel.org/r/20170302004607.ge27...@altlinux.org

I recommend splitting the change into "include" fix and "size_t" fix
like I did some time ago, see
http://lkml.kernel.org/r/20170302002253.gc27...@altlinux.org


-- 
ldv

Attachment: signature.asc
Description: PGP signature

Reply via email to