diff options
Diffstat (limited to '0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch')
-rw-r--r-- | 0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch b/0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch deleted file mode 100644 index 07bd4a72b593..000000000000 --- a/0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch +++ /dev/null @@ -1,159 +0,0 @@ -From 858ce410250bae8c5043b8277aa3941dd528d577 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Fri, 3 Jul 2020 10:33:51 -0600 -Subject: [PATCH 2/4] LINUX 5.8: Replace kernel_setsockopt with new funcs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Linux 5.8-rc1 commit 'net: remove kernel_setsockopt' (5a892ff2facb) -retires the kernel_setsockopt function. In prior kernel commits new -functions (ip_sock_set_*) were added to replace the specific functions -performed by kernel_setsockopt. - -Define new config test 'HAVE_IP_SOCK_SET' if the 'ip_sock_set' functions -are available. The config define 'HAVE_KERNEL_SETSOCKOPT' is no longer -set in Linux 5.8. - -Create wrapper functions that replace the kernel_setsockopt calls with -calls to the appropriate Linux kernel function(s) (depending on what -functions the kernel supports). - -Remove the unused 'kernel_getsockopt' function (used for building with -pre 2.6.19 kernels). - -For reference - Linux 2.6.19 introduced kernel_setsockopt - Linux 5.8 removed kernel_setsockopt and replaced the functionality - with a set of new functions (ip_sock_set_*) - -Reviewed-on: https://gerrit.openafs.org/14247 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit c48072b9800759ef1682b91ff1e962f6904a2594) - -Change-Id: I2724fad06b1882149d2066d13eced55eff5ee695 -Reviewed-on: https://gerrit.openafs.org/14267 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> ---- - src/afs/LINUX/osi_compat.h | 43 +++++++++++++++++++++++++------------ - src/cf/linux-kernel-func.m4 | 6 ++++++ - src/rx/LINUX/rx_knet.c | 11 +++------- - 3 files changed, 38 insertions(+), 22 deletions(-) - -diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h -index 4999b89b9..620b3730c 100644 ---- a/src/afs/LINUX/osi_compat.h -+++ b/src/afs/LINUX/osi_compat.h -@@ -314,9 +314,22 @@ zero_user_segment(struct page *pp, unsigned int from1, unsigned int to1) - } - #endif - --#ifndef HAVE_LINUX_KERNEL_SETSOCKOPT -+#if defined(HAVE_LINUX_IP_SOCK_SET) -+# include <net/ip.h> -+/* ip_sock_set_* introduced in linux 5.8 */ -+static inline void -+afs_linux_sock_set_mtu_discover(struct socket *sockp, int pmtu) -+{ -+ ip_sock_set_mtu_discover(sockp->sk, pmtu); -+} -+static inline void -+afs_linux_sock_set_recverr(struct socket *sockp) -+{ -+ ip_sock_set_recverr(sockp->sk); -+} -+#else -+# if !defined(HAVE_LINUX_KERNEL_SETSOCKOPT) - /* Available from 2.6.19 */ -- - static inline int - kernel_setsockopt(struct socket *sockp, int level, int name, char *val, - unsigned int len) { -@@ -329,20 +342,22 @@ kernel_setsockopt(struct socket *sockp, int level, int name, char *val, - - return ret; - } -+# endif /* !HAVE_LINUX_KERNEL_SETSOCKOPT */ - --static inline int --kernel_getsockopt(struct socket *sockp, int level, int name, char *val, -- int *len) { -- mm_segment_t old_fs = get_fs(); -- int ret; -- -- set_fs(get_ds()); -- ret = sockp->ops->getsockopt(sockp, level, name, val, len); -- set_fs(old_fs); -- -- return ret; -+static inline void -+afs_linux_sock_set_mtu_discover(struct socket *sockp, int pmtu) -+{ -+ kernel_setsockopt(sockp, SOL_IP, IP_MTU_DISCOVER, (char *)&pmtu, -+ sizeof(pmtu)); - } --#endif -+static inline void -+afs_linux_sock_set_recverr(struct socket *sockp) -+{ -+ int recverr = 1; -+ kernel_setsockopt(sockp, SOL_IP, IP_RECVERR, (char *)&recverr, -+ sizeof(recverr)); -+} -+#endif /* !HAVE_LINUX_IP_SOCK_SET */ - - #ifdef HAVE_TRY_TO_FREEZE - static inline int -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index 07627db52..78ff48294 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -151,6 +151,12 @@ AC_CHECK_LINUX_FUNC([lru_cache_add_file], - [#include <linux/swap.h>], - [lru_cache_add_file(NULL);]) - -+dnl Linux 5.8 replaced kernel_setsockopt with helper functions -+dnl e.g. ip_sock_set_mtu_discover, ip_sock_set_recverr -+AC_CHECK_LINUX_FUNC([ip_sock_set], -+ [#include <net/ip.h>], -+ [ip_sock_set_mtu_discover(NULL, 0);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], -diff --git a/src/rx/LINUX/rx_knet.c b/src/rx/LINUX/rx_knet.c -index 9fbb563f3..50607c8f5 100644 ---- a/src/rx/LINUX/rx_knet.c -+++ b/src/rx/LINUX/rx_knet.c -@@ -34,7 +34,6 @@ - #include <linux/errqueue.h> - #include <linux/icmp.h> - #endif -- - #include "osi_compat.h" - - /* rxk_NewSocket -@@ -76,14 +75,10 @@ rxk_NewSocketHost(afs_uint32 ahost, short aport) - return NULL; - } - -- kernel_setsockopt(sockp, SOL_IP, IP_MTU_DISCOVER, (char *)&pmtu, -- sizeof(pmtu)); -+ afs_linux_sock_set_mtu_discover(sockp, pmtu); -+ - #ifdef AFS_RXERRQ_ENV -- { -- int recverr = 1; -- kernel_setsockopt(sockp, SOL_IP, IP_RECVERR, (char *)&recverr, -- sizeof(recverr)); -- } -+ afs_linux_sock_set_recverr(sockp); - #endif - return (osi_socket *)sockp; - } --- -2.27.0 - |