On Fri, Sep 15, 2017 at 02:14:32PM -0700, David Miller wrote: > > diff --git a/include/uapi/linux/vm_sockets.h > > b/include/uapi/linux/vm_sockets.h > > index b4ed5d895699..4ae5c625ac56 100644 > > --- a/include/uapi/linux/vm_sockets.h > > +++ b/include/uapi/linux/vm_sockets.h > > @@ -18,6 +18,10 @@ > > > > #include <linux/socket.h> > > > > +#ifndef __KERNEL__ > > +#include <sys/socket.h> /* struct sockaddr */ > > +#endif > > + > > There is no precedence whatsoever to include sys/socket.h in _any_ UAPI > header file provided by the kernel.
<linux/if.h> does it for the same reason: include/uapi/linux/if.h:#include <sys/socket.h> /* for struct sockaddr. */ If that is not acceptable for <linux/vm_sockets.h> then we could do the same thing as <linux/in.h>: #define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ Is that okay or do you have another suggestion for getting sizeof(struct sockaddr)? It's needed to pad struct sockaddr_vm. > __kernel_sa_family_t is what should be used in UAPI headers, only > non-UAPI headers can use plain sa_family_t. > > So that is the correct fix for this problem. Thanks, will fix in v2.