From: Jian Yu Date: Mon, 5 Apr 2021 08:16:54 +0000 (-0700) Subject: LU-13783 lnet: remove kernel_setsockopt() from lnet_sock_listen() X-Git-Tag: 2.14.52~141 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F07%2F43207%2F2;p=fs%2Flustre-release.git 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 --- 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)