From 10d99554631b978e52dc621d3c5f0ed8ffe8871b Mon Sep 17 00:00:00 2001 From: Jian Yu Date: Mon, 5 Apr 2021 01:16:54 -0700 Subject: [PATCH] LU-13783 lnet: remove kernel_setsockopt() from lnet_sock_listen() Linux 5.8 removes kernel_setsockopt(). In Lustre commit 99d9638d6c0, kernel_setsockopt() was removed from Lustre codes by using direct access or helper calls. However, the one in lnet_sock_listen() was not removed. This patch removes it by using the codes from previously defined kernel_setsockopt() directly. Fixes: 99d9638d6c0 ("LU-13783 libcfs: support removal of kernel_setsockopt()") Signed-off-by: Jian Yu Change-Id: I5b74bf113185c0c9af5c81ca6cd346f1be7a4720 Reviewed-on: https://review.whamcloud.com/43207 Tested-by: jenkins Reviewed-by: James Simmons Tested-by: Maloo Reviewed-by: Chris Horn Reviewed-by: Serguei Smirnov Reviewed-by: Oleg Drokin --- lnet/lnet/lib-socket.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lnet/lnet/lib-socket.c b/lnet/lnet/lib-socket.c index f087710..113201c 100644 --- a/lnet/lnet/lib-socket.c +++ b/lnet/lnet/lib-socket.c @@ -344,6 +344,7 @@ struct socket * lnet_sock_listen(int local_port, int backlog, struct net *ns) { struct socket *sock; + mm_segment_t oldfs; int val = 0; int rc; @@ -360,8 +361,11 @@ lnet_sock_listen(int local_port, int backlog, struct net *ns) * This is the default, but it can be overridden so * we force it back. */ - kernel_setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, - (char *) &val, sizeof(val)); + oldfs = get_fs(); + set_fs(KERNEL_DS); + sock->ops->setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, + (char __user __force *) &val, sizeof(val)); + set_fs(oldfs); rc = kernel_listen(sock, backlog); if (rc == 0) -- 1.8.3.1