On Mon, 2019-07-29 at 10:39 +0000, David Laight wrote: > From: Qian Cai > > Sent: 26 July 2019 21:58 > > > > There are a lot of those warnings with GCC8+ 64bit, > > > > ... > > Fix them by aligning the structures and fields to 8 bytes instead. > > ... > > struct sctp_setpeerprim { > > sctp_assoc_t sspp_assoc_id; > > - struct sockaddr_storage sspp_addr; > > -} __attribute__((packed, aligned(4))); > > + struct sockaddr_storage sspp_addr __attribute__((aligned(8))); > > +} __attribute__((packed, aligned(8))); > > What happens to this one if you change both to aligned(4) ? > Much the same way as: > struct { > int a; > long b __attribute__((aligned(4)); > }; > is only 12 bytes on (most) 64bit systems. No, that won't work. It because that, #define sockaddr_storage __kernel_sockaddr_storage struct __kernel_sockaddr_storage { ... } __attribute__ ((aligned(_K_SS_ALIGNSIZE))) #define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *)) A pointer is 8-byte on 64-bit systems. If changed "struct __kernel_sockaddr_storage" to use, __attribute__ ((aligned((4))) it then silence the warnings.