Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

vsock/uapi: fix linux/vm_sockets.h userspace compilation errors

If a userspace application just include <linux/vm_sockets.h> will fail
to build with the following errors:

/usr/include/linux/vm_sockets.h:182:39: error: invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr’
182 | unsigned char svm_zero[sizeof(struct sockaddr) -
| ^~~~~~
/usr/include/linux/vm_sockets.h:183:39: error: ‘sa_family_t’ undeclared here (not in a function)
183 | sizeof(sa_family_t) -
|

Include <sys/socket.h> for userspace (guarded by ifndef __KERNEL__)
where `struct sockaddr` and `sa_family_t` are defined.
We already do something similar in <linux/mptcp.h> and <linux/if.h>.

Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
Reported-by: Daan De Meyer <daan.j.demeyer@gmail.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20250623100053.40979-1-sgarzare@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Stefano Garzarella and committed by
Jakub Kicinski
22bbc1dc 1fd26729

+4
+4
include/uapi/linux/vm_sockets.h
··· 17 17 #ifndef _UAPI_VM_SOCKETS_H 18 18 #define _UAPI_VM_SOCKETS_H 19 19 20 + #ifndef __KERNEL__ 21 + #include <sys/socket.h> /* for struct sockaddr and sa_family_t */ 22 + #endif 23 + 20 24 #include <linux/socket.h> 21 25 #include <linux/types.h> 22 26