lede/package/qca/nss/qca-nss-ecm-64/patches/0006-ecm_interface-switch-to-kernel_recvmsg-api.patch

55 lines
1.5 KiB
Diff

From 5a91820d390b36dafd29075b55504827b0123e62 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com>
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 <ansuelsmth@gmail.com>
---
ecm_interface.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/ecm_interface.c b/ecm_interface.c
index b461456..6be872a 100644
--- a/ecm_interface.c
+++ b/ecm_interface.c
@@ -7617,9 +7617,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;
@@ -7629,7 +7633,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))
@@ -7640,6 +7645,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
}
/*
--
2.34.1