From 5a91820d390b36dafd29075b55504827b0123e62 Mon Sep 17 00:00:00 2001 From: Ansuel Smith Date: Sun, 8 May 2022 17:51:16 +0200 Subject: [PATCH 06/12] ecm_interface: switch to kernel_recvmsg api set/get_fs() got dropped in 5.11+ kernel. Convert it to kernel_recvmsg while fixing this deprecation. Signed-off-by: Ansuel Smith --- ecm_interface.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/ecm_interface.c +++ b/ecm_interface.c @@ -8012,9 +8012,13 @@ static int ecm_interface_wifi_event_hand static int ecm_interface_wifi_event_rx(struct socket *sock, struct sockaddr_nl *addr, unsigned char *buf, int len) { struct msghdr msg; - struct iovec iov; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)) + struct iovec iov; mm_segment_t oldfs; int size; +#else + struct kvec iov; +#endif iov.iov_base = buf; iov.iov_len = len; @@ -8024,7 +8028,8 @@ static int ecm_interface_wifi_event_rx(s msg.msg_namelen = sizeof(struct sockaddr_nl); msg.msg_control = NULL; msg.msg_controllen = 0; - oldfs = get_fs(); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)) + oldfs = get_fs(); set_fs(KERNEL_DS); iov_iter_init(&msg.msg_iter, READ, &iov, 1, len); #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)) @@ -8035,6 +8040,9 @@ static int ecm_interface_wifi_event_rx(s set_fs(oldfs); return size; +#else + return kernel_recvmsg(sock, &msg, &iov, 1, iov.iov_len, 0); +#endif } /*