Kernel modules for generic device fail to build with linux 6.19-rc1
EtherCAT 1.6.8
devices/generic.c: In function ‘ec_gen_device_create_socket’:
devices/generic.c:237:36: error: passing argument 2 of ‘kernel_bind’ from incompatible pointer type [-Wincompatible-pointer-types]
237 | ret = kernel_bind(dev->socket, (struct sockaddr *) &sa, sizeof(sa));
| ^~~~~~~~~~~~~~~~~~~~~~~
| |
| struct sockaddr *
In file included from /usr/lib/modules/6.19.0-rc1-1-mainline/build/include/net/scm.h:6,
from /usr/lib/modules/6.19.0-rc1-1-mainline/build/include/linux/netlink.h:9,
from /usr/lib/modules/6.19.0-rc1-1-mainline/build/include/uapi/linux/neighbour.h:6,
from /usr/lib/modules/6.19.0-rc1-1-mainline/build/include/linux/netdevice.h:44,
from /usr/lib/modules/6.19.0-rc1-1-mainline/build/include/uapi/linux/if_arp.h:27,
from /usr/lib/modules/6.19.0-rc1-1-mainline/build/include/linux/if_arp.h:23,
from devices/generic.c:32:
/usr/lib/modules/6.19.0-rc1-1-mainline/build/include/linux/net.h:347:63: note: expected ‘struct sockaddr_unsized *’ but argument is of type ‘struct sockaddr *’
347 | int kernel_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen);
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
This is due to these changes, struct sockaddr was removed
https://lore.kernel.org/all/20251104002617.2752303-1-kees@kernel.org/
Edited by Michał