All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>
Cc: Eric Dumazet <edumazet@google.com>,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	Vlad Yasevich <vyasevich@gmail.com>,
	Neil Horman <nhorman@tuxdriver.com>,
	Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>,
	Jon Maloy <jmaloy@redhat.com>, Ying Xue <ying.xue@windriver.com>,
	drbd-dev@lists.linbit.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org,
	linux-nvme@lists.infradead.org, target-devel@vger.kernel.org,
	linux-afs@lists.infradead.org, linux-cifs@vger.kernel.org,
	cluster-devel@redhat.com, ocfs2-devel@oss.oracle.com,
	netdev@vger.kernel.org, linux-sctp@vger.kernel.org,
	ceph-devel@vger.kernel.org, rds-devel@oss.oracle.com,
	linux-nfs@vger.kernel.org
Subject: [PATCH 02/33] net: add sock_set_linger
Date: Wed, 13 May 2020 08:26:17 +0200	[thread overview]
Message-ID: <20200513062649.2100053-3-hch@lst.de> (raw)
In-Reply-To: <20200513062649.2100053-1-hch@lst.de>

Add a helper to directly set the SO_LINGER sockopt from kernel space
without going through a fake uaccess.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/nvme/host/tcp.c   |  9 +--------
 drivers/nvme/target/tcp.c |  6 +-----
 include/net/sock.h        |  1 +
 net/core/sock.c           | 36 +++++++++++++++++++++++++-----------
 net/rds/tcp_listen.c      |  8 +-------
 net/sunrpc/svcsock.c      | 12 ++----------
 6 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index c15a92163c1f7..5cacb61c73229 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1313,7 +1313,6 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
 	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret, opt, rcv_pdu_size;
 
 	queue->ctrl = ctrl;
@@ -1361,13 +1360,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret) {
-		dev_err(nctrl->device,
-			"failed to set SO_LINGER sock opt %d\n", ret);
-		goto err_sock;
-	}
+	sock_set_linger(queue->sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 791aa32beeb98..87aba417189d2 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -1429,7 +1429,6 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 {
 	struct socket *sock = queue->sock;
 	struct inet_sock *inet = inet_sk(sock->sk);
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret;
 
 	ret = kernel_getsockname(sock,
@@ -1447,10 +1446,7 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret)
-		return ret;
+	sock_set_linger(sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/include/net/sock.h b/include/net/sock.h
index e801a147ad746..60890fb47fbc0 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2688,5 +2688,6 @@ static inline bool sk_dev_equal_l3scope(struct sock *sk, int dif)
 
 void sock_def_readable(struct sock *sk);
 void sock_set_reuseaddr(struct sock *sk, unsigned char reuse);
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger);
 
 #endif	/* _SOCK_H */
diff --git a/net/core/sock.c b/net/core/sock.c
index ff4faa3e68ac4..cbc5104ca3515 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -720,6 +720,30 @@ void sock_set_reuseaddr(struct sock *sk, unsigned char reuse)
 }
 EXPORT_SYMBOL(sock_set_reuseaddr);
 
+static void __sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	if (!onoff) {
+		sock_reset_flag(sk, SOCK_LINGER);
+		return;
+	}
+
+#if (BITS_PER_LONG == 32)
+	if (linger >= MAX_SCHEDULE_TIMEOUT / HZ)
+		sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
+	else
+#endif
+		sk->sk_lingertime = linger * HZ;
+	sock_set_flag(sk, SOCK_LINGER);
+}
+
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	lock_sock(sk);
+	__sock_set_linger(sk, onoff, linger);
+	release_sock(sk);
+}
+EXPORT_SYMBOL(sock_set_linger);
+
 /*
  *	This is meant for all protocols to use and covers goings on
  *	at the socket level. Everything here is generic.
@@ -886,17 +910,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 			ret = -EFAULT;
 			break;
 		}
-		if (!ling.l_onoff)
-			sock_reset_flag(sk, SOCK_LINGER);
-		else {
-#if (BITS_PER_LONG == 32)
-			if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
-				sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
-			else
-#endif
-				sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
-			sock_set_flag(sk, SOCK_LINGER);
-		}
+		__sock_set_linger(sk, ling.l_onoff, ling.l_linger);
 		break;
 
 	case SO_BSDCOMPAT:
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 810a3a49e9474..96f7538e5fa8d 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -113,13 +113,7 @@ struct rds_tcp_connection *rds_tcp_accept_one_path(struct rds_connection *conn)
 
 void rds_tcp_set_linger(struct socket *sock)
 {
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
-
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(sock->sk, true, 0);
 }
 
 int rds_tcp_accept_one(struct socket *sock)
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 023514e392b31..0f6b78d0e6170 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -323,17 +323,9 @@ static int svc_tcp_has_wspace(struct svc_xprt *xprt)
 
 static void svc_tcp_kill_temp_xprt(struct svc_xprt *xprt)
 {
-	struct svc_sock *svsk;
-	struct socket *sock;
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
+	struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
 
-	svsk = container_of(xprt, struct svc_sock, sk_xprt);
-	sock = svsk->sk_sock;
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(svsk->sk_sock->sk, true, 0);
 }
 
 /*
-- 
2.26.2


WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
	Jakub Kicinski <kuba-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Marcelo Ricardo Leitner
	<marcelo.leitner-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Eric Dumazet <edumazet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-sctp-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	drbd-dev-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org,
	linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	rds-devel-N0ozoZBvEnrZJqsBc5GL+g@public.gmane.org,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	Alexey Kuznetsov <kuznet-v/Mj1YrvjDBInbfyfbPRSQ@public.gmane.org>,
	linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>,
	Hideaki YOSHIFUJI
	<yoshfuji-VfPWfsRibaP+Ru+s062T9g@public.gmane.org>,
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Vlad Yasevich <vyasevich-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jon Maloy <jmaloy-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Ying Xue <ying.xue-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>,
	ocfs2-devel-N0ozoZBvEnrZJqsBc5GL+g@public.gmane.org
Subject: [PATCH 02/33] net: add sock_set_linger
Date: Wed, 13 May 2020 06:26:17 +0000	[thread overview]
Message-ID: <20200513062649.2100053-3-hch@lst.de> (raw)
In-Reply-To: <20200513062649.2100053-1-hch-jcswGhMUV9g@public.gmane.org>

Add a helper to directly set the SO_LINGER sockopt from kernel space
without going through a fake uaccess.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/nvme/host/tcp.c   |  9 +--------
 drivers/nvme/target/tcp.c |  6 +-----
 include/net/sock.h        |  1 +
 net/core/sock.c           | 36 +++++++++++++++++++++++++-----------
 net/rds/tcp_listen.c      |  8 +-------
 net/sunrpc/svcsock.c      | 12 ++----------
 6 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index c15a92163c1f7..5cacb61c73229 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1313,7 +1313,6 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
 	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret, opt, rcv_pdu_size;
 
 	queue->ctrl = ctrl;
@@ -1361,13 +1360,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret) {
-		dev_err(nctrl->device,
-			"failed to set SO_LINGER sock opt %d\n", ret);
-		goto err_sock;
-	}
+	sock_set_linger(queue->sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 791aa32beeb98..87aba417189d2 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -1429,7 +1429,6 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 {
 	struct socket *sock = queue->sock;
 	struct inet_sock *inet = inet_sk(sock->sk);
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret;
 
 	ret = kernel_getsockname(sock,
@@ -1447,10 +1446,7 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret)
-		return ret;
+	sock_set_linger(sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/include/net/sock.h b/include/net/sock.h
index e801a147ad746..60890fb47fbc0 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2688,5 +2688,6 @@ static inline bool sk_dev_equal_l3scope(struct sock *sk, int dif)
 
 void sock_def_readable(struct sock *sk);
 void sock_set_reuseaddr(struct sock *sk, unsigned char reuse);
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger);
 
 #endif	/* _SOCK_H */
diff --git a/net/core/sock.c b/net/core/sock.c
index ff4faa3e68ac4..cbc5104ca3515 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -720,6 +720,30 @@ void sock_set_reuseaddr(struct sock *sk, unsigned char reuse)
 }
 EXPORT_SYMBOL(sock_set_reuseaddr);
 
+static void __sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	if (!onoff) {
+		sock_reset_flag(sk, SOCK_LINGER);
+		return;
+	}
+
+#if (BITS_PER_LONG = 32)
+	if (linger >= MAX_SCHEDULE_TIMEOUT / HZ)
+		sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
+	else
+#endif
+		sk->sk_lingertime = linger * HZ;
+	sock_set_flag(sk, SOCK_LINGER);
+}
+
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	lock_sock(sk);
+	__sock_set_linger(sk, onoff, linger);
+	release_sock(sk);
+}
+EXPORT_SYMBOL(sock_set_linger);
+
 /*
  *	This is meant for all protocols to use and covers goings on
  *	at the socket level. Everything here is generic.
@@ -886,17 +910,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 			ret = -EFAULT;
 			break;
 		}
-		if (!ling.l_onoff)
-			sock_reset_flag(sk, SOCK_LINGER);
-		else {
-#if (BITS_PER_LONG = 32)
-			if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
-				sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
-			else
-#endif
-				sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
-			sock_set_flag(sk, SOCK_LINGER);
-		}
+		__sock_set_linger(sk, ling.l_onoff, ling.l_linger);
 		break;
 
 	case SO_BSDCOMPAT:
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 810a3a49e9474..96f7538e5fa8d 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -113,13 +113,7 @@ struct rds_tcp_connection *rds_tcp_accept_one_path(struct rds_connection *conn)
 
 void rds_tcp_set_linger(struct socket *sock)
 {
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
-
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(sock->sk, true, 0);
 }
 
 int rds_tcp_accept_one(struct socket *sock)
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 023514e392b31..0f6b78d0e6170 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -323,17 +323,9 @@ static int svc_tcp_has_wspace(struct svc_xprt *xprt)
 
 static void svc_tcp_kill_temp_xprt(struct svc_xprt *xprt)
 {
-	struct svc_sock *svsk;
-	struct socket *sock;
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
+	struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
 
-	svsk = container_of(xprt, struct svc_sock, sk_xprt);
-	sock = svsk->sk_sock;
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(svsk->sk_sock->sk, true, 0);
 }
 
 /*
-- 
2.26.2

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
To: "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
	Jakub Kicinski <kuba-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Marcelo Ricardo Leitner
	<marcelo.leitner-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Eric Dumazet <edumazet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-sctp-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	drbd-dev-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org,
	linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	rds-devel-N0ozoZBvEnrZJqsBc5GL+g@public.gmane.org,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	Alexey Kuznetsov <kuznet-v/Mj1YrvjDBInbfyfbPRSQ@public.gmane.org>,
	linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>,
	Hideaki YOSHIFUJI
	<yoshfuji-VfPWfsRibaP+Ru+s062T9g@public.gmane.org>,
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Vlad Yasevich <vyasevich-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jon Maloy <jmaloy-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Ying Xue <ying.xue-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>,
	ocfs2-devel-N0ozoZBvEnrZJqsBc5GL+g@public.gmane.org
Subject: [PATCH 02/33] net: add sock_set_linger
Date: Wed, 13 May 2020 08:26:17 +0200	[thread overview]
Message-ID: <20200513062649.2100053-3-hch@lst.de> (raw)
In-Reply-To: <20200513062649.2100053-1-hch-jcswGhMUV9g@public.gmane.org>

Add a helper to directly set the SO_LINGER sockopt from kernel space
without going through a fake uaccess.

Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
---
 drivers/nvme/host/tcp.c   |  9 +--------
 drivers/nvme/target/tcp.c |  6 +-----
 include/net/sock.h        |  1 +
 net/core/sock.c           | 36 +++++++++++++++++++++++++-----------
 net/rds/tcp_listen.c      |  8 +-------
 net/sunrpc/svcsock.c      | 12 ++----------
 6 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index c15a92163c1f7..5cacb61c73229 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1313,7 +1313,6 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
 	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret, opt, rcv_pdu_size;
 
 	queue->ctrl = ctrl;
@@ -1361,13 +1360,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret) {
-		dev_err(nctrl->device,
-			"failed to set SO_LINGER sock opt %d\n", ret);
-		goto err_sock;
-	}
+	sock_set_linger(queue->sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 791aa32beeb98..87aba417189d2 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -1429,7 +1429,6 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 {
 	struct socket *sock = queue->sock;
 	struct inet_sock *inet = inet_sk(sock->sk);
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret;
 
 	ret = kernel_getsockname(sock,
@@ -1447,10 +1446,7 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret)
-		return ret;
+	sock_set_linger(sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/include/net/sock.h b/include/net/sock.h
index e801a147ad746..60890fb47fbc0 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2688,5 +2688,6 @@ static inline bool sk_dev_equal_l3scope(struct sock *sk, int dif)
 
 void sock_def_readable(struct sock *sk);
 void sock_set_reuseaddr(struct sock *sk, unsigned char reuse);
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger);
 
 #endif	/* _SOCK_H */
diff --git a/net/core/sock.c b/net/core/sock.c
index ff4faa3e68ac4..cbc5104ca3515 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -720,6 +720,30 @@ void sock_set_reuseaddr(struct sock *sk, unsigned char reuse)
 }
 EXPORT_SYMBOL(sock_set_reuseaddr);
 
+static void __sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	if (!onoff) {
+		sock_reset_flag(sk, SOCK_LINGER);
+		return;
+	}
+
+#if (BITS_PER_LONG == 32)
+	if (linger >= MAX_SCHEDULE_TIMEOUT / HZ)
+		sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
+	else
+#endif
+		sk->sk_lingertime = linger * HZ;
+	sock_set_flag(sk, SOCK_LINGER);
+}
+
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	lock_sock(sk);
+	__sock_set_linger(sk, onoff, linger);
+	release_sock(sk);
+}
+EXPORT_SYMBOL(sock_set_linger);
+
 /*
  *	This is meant for all protocols to use and covers goings on
  *	at the socket level. Everything here is generic.
@@ -886,17 +910,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 			ret = -EFAULT;
 			break;
 		}
-		if (!ling.l_onoff)
-			sock_reset_flag(sk, SOCK_LINGER);
-		else {
-#if (BITS_PER_LONG == 32)
-			if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
-				sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
-			else
-#endif
-				sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
-			sock_set_flag(sk, SOCK_LINGER);
-		}
+		__sock_set_linger(sk, ling.l_onoff, ling.l_linger);
 		break;
 
 	case SO_BSDCOMPAT:
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 810a3a49e9474..96f7538e5fa8d 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -113,13 +113,7 @@ struct rds_tcp_connection *rds_tcp_accept_one_path(struct rds_connection *conn)
 
 void rds_tcp_set_linger(struct socket *sock)
 {
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
-
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(sock->sk, true, 0);
 }
 
 int rds_tcp_accept_one(struct socket *sock)
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 023514e392b31..0f6b78d0e6170 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -323,17 +323,9 @@ static int svc_tcp_has_wspace(struct svc_xprt *xprt)
 
 static void svc_tcp_kill_temp_xprt(struct svc_xprt *xprt)
 {
-	struct svc_sock *svsk;
-	struct socket *sock;
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
+	struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
 
-	svsk = container_of(xprt, struct svc_sock, sk_xprt);
-	sock = svsk->sk_sock;
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(svsk->sk_sock->sk, true, 0);
 }
 
 /*
-- 
2.26.2

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>
Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>,
	Eric Dumazet <edumazet@google.com>,
	linux-nvme@lists.infradead.org, linux-sctp@vger.kernel.org,
	target-devel@vger.kernel.org, linux-afs@lists.infradead.org,
	drbd-dev@lists.linbit.com, linux-cifs@vger.kernel.org,
	rds-devel@oss.oracle.com, linux-rdma@vger.kernel.org,
	cluster-devel@redhat.com, Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	linux-block@vger.kernel.org, ceph-devel@vger.kernel.org,
	linux-nfs@vger.kernel.org, Neil Horman <nhorman@tuxdriver.com>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	netdev@vger.kernel.org, Vlad Yasevich <vyasevich@gmail.com>,
	linux-kernel@vger.kernel.org, Jon Maloy <jmaloy@redhat.com>,
	Ying Xue <ying.xue@windriver.com>,
	ocfs2-devel@oss.oracle.com
Subject: [PATCH 02/33] net: add sock_set_linger
Date: Wed, 13 May 2020 08:26:17 +0200	[thread overview]
Message-ID: <20200513062649.2100053-3-hch@lst.de> (raw)
In-Reply-To: <20200513062649.2100053-1-hch@lst.de>

Add a helper to directly set the SO_LINGER sockopt from kernel space
without going through a fake uaccess.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/nvme/host/tcp.c   |  9 +--------
 drivers/nvme/target/tcp.c |  6 +-----
 include/net/sock.h        |  1 +
 net/core/sock.c           | 36 +++++++++++++++++++++++++-----------
 net/rds/tcp_listen.c      |  8 +-------
 net/sunrpc/svcsock.c      | 12 ++----------
 6 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index c15a92163c1f7..5cacb61c73229 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1313,7 +1313,6 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
 	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret, opt, rcv_pdu_size;
 
 	queue->ctrl = ctrl;
@@ -1361,13 +1360,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret) {
-		dev_err(nctrl->device,
-			"failed to set SO_LINGER sock opt %d\n", ret);
-		goto err_sock;
-	}
+	sock_set_linger(queue->sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 791aa32beeb98..87aba417189d2 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -1429,7 +1429,6 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 {
 	struct socket *sock = queue->sock;
 	struct inet_sock *inet = inet_sk(sock->sk);
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret;
 
 	ret = kernel_getsockname(sock,
@@ -1447,10 +1446,7 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret)
-		return ret;
+	sock_set_linger(sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/include/net/sock.h b/include/net/sock.h
index e801a147ad746..60890fb47fbc0 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2688,5 +2688,6 @@ static inline bool sk_dev_equal_l3scope(struct sock *sk, int dif)
 
 void sock_def_readable(struct sock *sk);
 void sock_set_reuseaddr(struct sock *sk, unsigned char reuse);
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger);
 
 #endif	/* _SOCK_H */
diff --git a/net/core/sock.c b/net/core/sock.c
index ff4faa3e68ac4..cbc5104ca3515 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -720,6 +720,30 @@ void sock_set_reuseaddr(struct sock *sk, unsigned char reuse)
 }
 EXPORT_SYMBOL(sock_set_reuseaddr);
 
+static void __sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	if (!onoff) {
+		sock_reset_flag(sk, SOCK_LINGER);
+		return;
+	}
+
+#if (BITS_PER_LONG == 32)
+	if (linger >= MAX_SCHEDULE_TIMEOUT / HZ)
+		sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
+	else
+#endif
+		sk->sk_lingertime = linger * HZ;
+	sock_set_flag(sk, SOCK_LINGER);
+}
+
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	lock_sock(sk);
+	__sock_set_linger(sk, onoff, linger);
+	release_sock(sk);
+}
+EXPORT_SYMBOL(sock_set_linger);
+
 /*
  *	This is meant for all protocols to use and covers goings on
  *	at the socket level. Everything here is generic.
@@ -886,17 +910,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 			ret = -EFAULT;
 			break;
 		}
-		if (!ling.l_onoff)
-			sock_reset_flag(sk, SOCK_LINGER);
-		else {
-#if (BITS_PER_LONG == 32)
-			if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
-				sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
-			else
-#endif
-				sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
-			sock_set_flag(sk, SOCK_LINGER);
-		}
+		__sock_set_linger(sk, ling.l_onoff, ling.l_linger);
 		break;
 
 	case SO_BSDCOMPAT:
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 810a3a49e9474..96f7538e5fa8d 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -113,13 +113,7 @@ struct rds_tcp_connection *rds_tcp_accept_one_path(struct rds_connection *conn)
 
 void rds_tcp_set_linger(struct socket *sock)
 {
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
-
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(sock->sk, true, 0);
 }
 
 int rds_tcp_accept_one(struct socket *sock)
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 023514e392b31..0f6b78d0e6170 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -323,17 +323,9 @@ static int svc_tcp_has_wspace(struct svc_xprt *xprt)
 
 static void svc_tcp_kill_temp_xprt(struct svc_xprt *xprt)
 {
-	struct svc_sock *svsk;
-	struct socket *sock;
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
+	struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
 
-	svsk = container_of(xprt, struct svc_sock, sk_xprt);
-	sock = svsk->sk_sock;
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(svsk->sk_sock->sk, true, 0);
 }
 
 /*
-- 
2.26.2


_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
	Jakub Kicinski <kuba-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Marcelo Ricardo Leitner
	<marcelo.leitner-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Eric Dumazet <edumazet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-sctp-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	drbd-dev-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org,
	linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	rds-devel-N0ozoZBvEnrZJqsBc5GL+g@public.gmane.org,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	Alexey Kuznetsov <kuznet-v/Mj1YrvjDBInbfyfbPRSQ@public.gmane.org>,
	linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>,
	Hideaki YOSHIFUJI
	<yoshfuji-VfPWfsRibaP+Ru+s062T9g@public.gmane.org>,
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Vlad Yasevich <vyasevich-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jon Maloy <jmaloy-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Ying Xue <ying.xue-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>,
	ocfs2-devel-N0ozoZBvEnrZJqsBc5GL+g@public.gmane.org
Subject: [Ocfs2-devel] [PATCH 02/33] net: add sock_set_linger
Date: Wed, 13 May 2020 08:26:17 +0200	[thread overview]
Message-ID: <20200513062649.2100053-3-hch@lst.de> (raw)
In-Reply-To: <20200513062649.2100053-1-hch@lst.de>

Add a helper to directly set the SO_LINGER sockopt from kernel space
without going through a fake uaccess.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/nvme/host/tcp.c   |  9 +--------
 drivers/nvme/target/tcp.c |  6 +-----
 include/net/sock.h        |  1 +
 net/core/sock.c           | 36 +++++++++++++++++++++++++-----------
 net/rds/tcp_listen.c      |  8 +-------
 net/sunrpc/svcsock.c      | 12 ++----------
 6 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index c15a92163c1f7..5cacb61c73229 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1313,7 +1313,6 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
 	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret, opt, rcv_pdu_size;
 
 	queue->ctrl = ctrl;
@@ -1361,13 +1360,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret) {
-		dev_err(nctrl->device,
-			"failed to set SO_LINGER sock opt %d\n", ret);
-		goto err_sock;
-	}
+	sock_set_linger(queue->sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 791aa32beeb98..87aba417189d2 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -1429,7 +1429,6 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 {
 	struct socket *sock = queue->sock;
 	struct inet_sock *inet = inet_sk(sock->sk);
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret;
 
 	ret = kernel_getsockname(sock,
@@ -1447,10 +1446,7 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret)
-		return ret;
+	sock_set_linger(sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/include/net/sock.h b/include/net/sock.h
index e801a147ad746..60890fb47fbc0 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2688,5 +2688,6 @@ static inline bool sk_dev_equal_l3scope(struct sock *sk, int dif)
 
 void sock_def_readable(struct sock *sk);
 void sock_set_reuseaddr(struct sock *sk, unsigned char reuse);
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger);
 
 #endif	/* _SOCK_H */
diff --git a/net/core/sock.c b/net/core/sock.c
index ff4faa3e68ac4..cbc5104ca3515 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -720,6 +720,30 @@ void sock_set_reuseaddr(struct sock *sk, unsigned char reuse)
 }
 EXPORT_SYMBOL(sock_set_reuseaddr);
 
+static void __sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	if (!onoff) {
+		sock_reset_flag(sk, SOCK_LINGER);
+		return;
+	}
+
+#if (BITS_PER_LONG == 32)
+	if (linger >= MAX_SCHEDULE_TIMEOUT / HZ)
+		sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
+	else
+#endif
+		sk->sk_lingertime = linger * HZ;
+	sock_set_flag(sk, SOCK_LINGER);
+}
+
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	lock_sock(sk);
+	__sock_set_linger(sk, onoff, linger);
+	release_sock(sk);
+}
+EXPORT_SYMBOL(sock_set_linger);
+
 /*
  *	This is meant for all protocols to use and covers goings on
  *	at the socket level. Everything here is generic.
@@ -886,17 +910,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 			ret = -EFAULT;
 			break;
 		}
-		if (!ling.l_onoff)
-			sock_reset_flag(sk, SOCK_LINGER);
-		else {
-#if (BITS_PER_LONG == 32)
-			if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
-				sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
-			else
-#endif
-				sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
-			sock_set_flag(sk, SOCK_LINGER);
-		}
+		__sock_set_linger(sk, ling.l_onoff, ling.l_linger);
 		break;
 
 	case SO_BSDCOMPAT:
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 810a3a49e9474..96f7538e5fa8d 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -113,13 +113,7 @@ struct rds_tcp_connection *rds_tcp_accept_one_path(struct rds_connection *conn)
 
 void rds_tcp_set_linger(struct socket *sock)
 {
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
-
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(sock->sk, true, 0);
 }
 
 int rds_tcp_accept_one(struct socket *sock)
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 023514e392b31..0f6b78d0e6170 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -323,17 +323,9 @@ static int svc_tcp_has_wspace(struct svc_xprt *xprt)
 
 static void svc_tcp_kill_temp_xprt(struct svc_xprt *xprt)
 {
-	struct svc_sock *svsk;
-	struct socket *sock;
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
+	struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
 
-	svsk = container_of(xprt, struct svc_sock, sk_xprt);
-	sock = svsk->sk_sock;
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(svsk->sk_sock->sk, true, 0);
 }
 
 /*
-- 
2.26.2

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 02/33] net: add sock_set_linger
Date: Wed, 13 May 2020 08:26:17 +0200	[thread overview]
Message-ID: <20200513062649.2100053-3-hch@lst.de> (raw)
In-Reply-To: <20200513062649.2100053-1-hch@lst.de>

Add a helper to directly set the SO_LINGER sockopt from kernel space
without going through a fake uaccess.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/nvme/host/tcp.c   |  9 +--------
 drivers/nvme/target/tcp.c |  6 +-----
 include/net/sock.h        |  1 +
 net/core/sock.c           | 36 +++++++++++++++++++++++++-----------
 net/rds/tcp_listen.c      |  8 +-------
 net/sunrpc/svcsock.c      | 12 ++----------
 6 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index c15a92163c1f7..5cacb61c73229 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1313,7 +1313,6 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
 	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret, opt, rcv_pdu_size;
 
 	queue->ctrl = ctrl;
@@ -1361,13 +1360,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl,
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret) {
-		dev_err(nctrl->device,
-			"failed to set SO_LINGER sock opt %d\n", ret);
-		goto err_sock;
-	}
+	sock_set_linger(queue->sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(queue->sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 791aa32beeb98..87aba417189d2 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -1429,7 +1429,6 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 {
 	struct socket *sock = queue->sock;
 	struct inet_sock *inet = inet_sk(sock->sk);
-	struct linger sol = { .l_onoff = 1, .l_linger = 0 };
 	int ret;
 
 	ret = kernel_getsockname(sock,
@@ -1447,10 +1446,7 @@ static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
 	 * close. This is done to prevent stale data from being sent should
 	 * the network connection be restored before TCP times out.
 	 */
-	ret = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			(char *)&sol, sizeof(sol));
-	if (ret)
-		return ret;
+	sock_set_linger(sock->sk, true, 0);
 
 	if (so_priority > 0) {
 		ret = kernel_setsockopt(sock, SOL_SOCKET, SO_PRIORITY,
diff --git a/include/net/sock.h b/include/net/sock.h
index e801a147ad746..60890fb47fbc0 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2688,5 +2688,6 @@ static inline bool sk_dev_equal_l3scope(struct sock *sk, int dif)
 
 void sock_def_readable(struct sock *sk);
 void sock_set_reuseaddr(struct sock *sk, unsigned char reuse);
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger);
 
 #endif	/* _SOCK_H */
diff --git a/net/core/sock.c b/net/core/sock.c
index ff4faa3e68ac4..cbc5104ca3515 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -720,6 +720,30 @@ void sock_set_reuseaddr(struct sock *sk, unsigned char reuse)
 }
 EXPORT_SYMBOL(sock_set_reuseaddr);
 
+static void __sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	if (!onoff) {
+		sock_reset_flag(sk, SOCK_LINGER);
+		return;
+	}
+
+#if (BITS_PER_LONG == 32)
+	if (linger >= MAX_SCHEDULE_TIMEOUT / HZ)
+		sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
+	else
+#endif
+		sk->sk_lingertime = linger * HZ;
+	sock_set_flag(sk, SOCK_LINGER);
+}
+
+void sock_set_linger(struct sock *sk, bool onoff, unsigned int linger)
+{
+	lock_sock(sk);
+	__sock_set_linger(sk, onoff, linger);
+	release_sock(sk);
+}
+EXPORT_SYMBOL(sock_set_linger);
+
 /*
  *	This is meant for all protocols to use and covers goings on
  *	at the socket level. Everything here is generic.
@@ -886,17 +910,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 			ret = -EFAULT;
 			break;
 		}
-		if (!ling.l_onoff)
-			sock_reset_flag(sk, SOCK_LINGER);
-		else {
-#if (BITS_PER_LONG == 32)
-			if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
-				sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
-			else
-#endif
-				sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
-			sock_set_flag(sk, SOCK_LINGER);
-		}
+		__sock_set_linger(sk, ling.l_onoff, ling.l_linger);
 		break;
 
 	case SO_BSDCOMPAT:
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 810a3a49e9474..96f7538e5fa8d 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -113,13 +113,7 @@ struct rds_tcp_connection *rds_tcp_accept_one_path(struct rds_connection *conn)
 
 void rds_tcp_set_linger(struct socket *sock)
 {
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
-
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(sock->sk, true, 0);
 }
 
 int rds_tcp_accept_one(struct socket *sock)
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 023514e392b31..0f6b78d0e6170 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -323,17 +323,9 @@ static int svc_tcp_has_wspace(struct svc_xprt *xprt)
 
 static void svc_tcp_kill_temp_xprt(struct svc_xprt *xprt)
 {
-	struct svc_sock *svsk;
-	struct socket *sock;
-	struct linger no_linger = {
-		.l_onoff = 1,
-		.l_linger = 0,
-	};
+	struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
 
-	svsk = container_of(xprt, struct svc_sock, sk_xprt);
-	sock = svsk->sk_sock;
-	kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
-			  (char *)&no_linger, sizeof(no_linger));
+	sock_set_linger(svsk->sk_sock->sk, true, 0);
 }
 
 /*
-- 
2.26.2



  parent reply	other threads:[~2020-05-13  6:27 UTC|newest]

Thread overview: 704+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-13  6:26 remove kernel_setsockopt and kernel_getsockopt Christoph Hellwig
2020-05-13  6:26 ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26 ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26 ` Christoph Hellwig
2020-05-13  6:26 ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 01/33] net: add sock_set_reuseaddr Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` Christoph Hellwig [this message]
2020-05-13  6:26   ` [Cluster-devel] [PATCH 02/33] net: add sock_set_linger Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 03/33] net: add sock_set_priority Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 04/33] net: add sock_set_sndtimeo Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 05/33] net: add sock_bindtoindex Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 06/33] net: add sock_set_timestamps Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 07/33] net: add sock_set_keepalive Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 08/33] net: add sock_set_rcvbuf Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 09/33] net: add sock_set_reuseport Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 10/33] tcp: add tcp_sock_set_cork Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 11/33] tcp: tcp_sock_set_nodelay Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13 12:51   ` Jason Gunthorpe
2020-05-13 12:51     ` [Cluster-devel] " Jason Gunthorpe
2020-05-13 12:51     ` [Ocfs2-devel] " Jason Gunthorpe
2020-05-13 12:51     ` Jason Gunthorpe
2020-05-13 12:51     ` Jason Gunthorpe
2020-05-13 12:51     ` Jason Gunthorpe
2020-05-13  6:26 ` [PATCH 12/33] tcp: add tcp_sock_set_quickack Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 13/33] tcp: add tcp_sock_set_syncnt Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 14/33] tcp: add tcp_sock_set_user_timeout Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 15/33] tcp: add tcp_sock_set_keepidle Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 16/33] tcp: add tcp_sock_set_keepintvl Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 17/33] tcp: add tcp_sock_set_keepcnt Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 18/33] ipv4: add ip_sock_set_tos Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 19/33] ipv4: add ip_sock_set_freebind Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 20/33] ipv4: add ip_sock_set_recverr Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13 21:00   ` Joe Perches
2020-05-13 21:00     ` [Cluster-devel] " Joe Perches
2020-05-13 21:00     ` [Ocfs2-devel] " Joe Perches
2020-05-13 21:00     ` Joe Perches
2020-05-13 21:00     ` Joe Perches
2020-05-14 10:30     ` Christoph Hellwig
2020-05-14 10:30       ` [Cluster-devel] " Christoph Hellwig
2020-05-14 10:30       ` [Ocfs2-devel] " Christoph Hellwig
2020-05-14 10:30       ` Christoph Hellwig
2020-05-14 10:30       ` Christoph Hellwig
2020-05-14 10:30       ` Christoph Hellwig
2020-05-14 11:51       ` Joe Perches
2020-05-14 11:51         ` [Cluster-devel] " Joe Perches
2020-05-14 11:51         ` [Ocfs2-devel] " Joe Perches
2020-05-14 11:51         ` Joe Perches
2020-05-14 11:51         ` Joe Perches
2020-05-14 11:51         ` Joe Perches
2020-05-20 14:18         ` Christoph Hellwig
2020-05-20 14:18           ` [Cluster-devel] " Christoph Hellwig
2020-05-20 14:18           ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 14:18           ` Christoph Hellwig
2020-05-20 14:18           ` Christoph Hellwig
2020-05-20 14:18           ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 21/33] ipv4: add ip_sock_set_mtu_discover Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 22/33] ipv6: add ip6_sock_set_v6only Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 23/33] ipv6: add ip6_sock_set_recverr Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 24/33] ipv6: add ip6_sock_set_addr_preferences Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 25/33] ipv6: add ip6_sock_set_recvpktinfo Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 26/33] sctp: lift copying in addrs into sctp_setsockopt Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 27/33] sctp: export sctp_setsockopt_bindx Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13 18:00   ` Marcelo Ricardo Leitner
2020-05-13 18:00     ` [Cluster-devel] " Marcelo Ricardo Leitner
2020-05-13 18:00     ` [Ocfs2-devel] " Marcelo Ricardo Leitner
2020-05-13 18:00     ` Marcelo Ricardo Leitner
2020-05-13 18:00     ` Marcelo Ricardo Leitner
2020-05-14  6:28     ` Christoph Hellwig
2020-05-14  6:28       ` [Cluster-devel] " Christoph Hellwig
2020-05-14  6:28       ` [Ocfs2-devel] " Christoph Hellwig
2020-05-14  6:28       ` Christoph Hellwig
2020-05-14  6:28       ` Christoph Hellwig
2020-05-14  6:28       ` Christoph Hellwig
2020-05-14  8:23     ` David Laight
2020-05-14  8:23       ` [Cluster-devel] " David Laight
2020-05-14  8:23       ` [Ocfs2-devel] " David Laight
2020-05-14  8:23       ` David Laight
2020-05-14  8:23       ` David Laight
2020-05-14 10:40     ` is it ok to always pull in sctp for dlm, was: " Christoph Hellwig
2020-05-14 10:40       ` [Cluster-devel] " Christoph Hellwig
2020-05-14 10:40       ` [Ocfs2-devel] " Christoph Hellwig
2020-05-14 10:40       ` Christoph Hellwig
2020-05-14 10:40       ` Christoph Hellwig
2020-05-14 10:40       ` Christoph Hellwig
2020-05-14 14:24       ` David Teigland
2020-05-14 14:24         ` [Cluster-devel] " David Teigland
2020-05-14 14:24         ` [Ocfs2-devel] " David Teigland
2020-05-14 14:24         ` David Teigland
2020-05-14 14:24         ` David Teigland
2020-05-14 14:24         ` is it ok to always pull in sctp for dlm, was: Re: [PATCH 27/33] sctp: export sctp_setsockopt_bin David Teigland
2020-05-15 15:20     ` [PATCH 27/33] sctp: export sctp_setsockopt_bindx David Howells
2020-05-15 15:20       ` [Cluster-devel] " David Howells
2020-05-15 15:20       ` [Ocfs2-devel] " David Howells
2020-05-15 15:20       ` David Howells
2020-05-15 15:20       ` David Howells
2020-05-15 15:20       ` David Howells
2020-05-15 15:24       ` Christoph Hellwig
2020-05-15 15:24         ` [Cluster-devel] " Christoph Hellwig
2020-05-15 15:24         ` [Ocfs2-devel] " Christoph Hellwig
2020-05-15 15:24         ` Christoph Hellwig
2020-05-15 15:24         ` Christoph Hellwig
2020-05-15 15:24         ` Christoph Hellwig
2020-05-16 15:21         ` David Laight
2020-05-16 15:21           ` [Cluster-devel] " David Laight
2020-05-16 15:21           ` [Ocfs2-devel] " David Laight
2020-05-16 15:21           ` David Laight
2020-05-16 15:21           ` David Laight
2020-05-16 15:11       ` David Laight
2020-05-16 15:11         ` [Cluster-devel] " David Laight
2020-05-16 15:11         ` [Ocfs2-devel] " David Laight
2020-05-16 15:11         ` David Laight
2020-05-16 15:11         ` David Laight
2020-05-16 15:11         ` David Laight
2020-05-16 15:36         ` [Ocfs2-devel] " Matthew Wilcox
2020-05-16 15:36           ` [Cluster-devel] " Matthew Wilcox
2020-05-16 15:36           ` Matthew Wilcox
2020-05-16 15:36           ` Matthew Wilcox
2020-05-16 15:36           ` Matthew Wilcox
2020-05-16 15:36           ` Matthew Wilcox
2020-05-17  8:48           ` David Laight
2020-05-17  8:48             ` [Cluster-devel] " David Laight
2020-05-17  8:48             ` David Laight
2020-05-17  8:48             ` David Laight
2020-05-17  8:48             ` David Laight
2020-05-13  6:26 ` [PATCH 28/33] sctp: add sctp_sock_set_nodelay Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 29/33] rxrpc_sock_set_min_security_level Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 30/33] tipc: call tsk_set_importance from tipc_topsrv_create_listener Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 31/33] net: remove kernel_setsockopt Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26 ` [PATCH 32/33] sctp: add sctp_sock_get_primary_addr Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13 18:03   ` Marcelo Ricardo Leitner
2020-05-13 18:03     ` [Cluster-devel] " Marcelo Ricardo Leitner
2020-05-13 18:03     ` [Ocfs2-devel] " Marcelo Ricardo Leitner
2020-05-13 18:03     ` Marcelo Ricardo Leitner
2020-05-13 18:03     ` Marcelo Ricardo Leitner
2020-05-14  9:51     ` David Laight
2020-05-14  9:51       ` [Cluster-devel] " David Laight
2020-05-14  9:51       ` [Ocfs2-devel] " David Laight
2020-05-14  9:51       ` David Laight
2020-05-14  9:51       ` David Laight
2020-05-14 12:30       ` David Laight
2020-05-14 12:30         ` [Cluster-devel] " David Laight
2020-05-14 12:30         ` [Ocfs2-devel] " David Laight
2020-05-14 12:30         ` David Laight
2020-05-14 12:30         ` David Laight
2020-05-14 13:27         ` David Laight
2020-05-14 13:27           ` [Cluster-devel] " David Laight
2020-05-14 13:27           ` [Ocfs2-devel] " David Laight
2020-05-14 13:27           ` David Laight
2020-05-14 13:27           ` David Laight
2020-05-13  6:26 ` [PATCH 33/33] net: remove kernel_getsockopt Christoph Hellwig
2020-05-13  6:26   ` [Cluster-devel] " Christoph Hellwig
2020-05-13  6:26   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13  6:26   ` Christoph Hellwig
2020-05-13 13:13 ` [PATCH 29/33] rxrpc_sock_set_min_security_level David Howells
2020-05-13 13:13   ` [Cluster-devel] " David Howells
2020-05-13 13:13   ` [Ocfs2-devel] " David Howells
2020-05-13 13:13   ` David Howells
2020-05-13 13:13   ` David Howells
2020-05-13 13:13   ` David Howells
2020-05-14 10:29   ` Christoph Hellwig
2020-05-14 10:29     ` [Cluster-devel] " Christoph Hellwig
2020-05-14 10:29     ` [Ocfs2-devel] " Christoph Hellwig
2020-05-14 10:29     ` Christoph Hellwig
2020-05-14 10:29     ` Christoph Hellwig
2020-05-14 10:29     ` Christoph Hellwig
2020-05-15 15:13   ` David Howells
2020-05-15 15:13     ` [Cluster-devel] " David Howells
2020-05-15 15:13     ` [Ocfs2-devel] " David Howells
2020-05-15 15:13     ` David Howells
2020-05-15 15:13     ` David Howells
2020-05-15 15:13     ` David Howells
2020-05-13 13:17 ` [PATCH 21/33] ipv4: add ip_sock_set_mtu_discover David Howells
2020-05-13 13:17   ` [Cluster-devel] " David Howells
2020-05-13 13:17   ` [Ocfs2-devel] " David Howells
2020-05-13 13:17   ` David Howells
2020-05-13 13:17   ` David Howells
2020-05-13 13:17   ` David Howells
2020-05-14  6:26   ` Christoph Hellwig
2020-05-14  6:26     ` [Cluster-devel] " Christoph Hellwig
2020-05-14  6:26     ` [Ocfs2-devel] " Christoph Hellwig
2020-05-14  6:26     ` Christoph Hellwig
2020-05-14  6:26     ` Christoph Hellwig
2020-05-14  6:26     ` Christoph Hellwig
2020-05-15 15:15   ` David Howells
2020-05-15 15:15     ` [Cluster-devel] " David Howells
2020-05-15 15:15     ` [Ocfs2-devel] " David Howells
2020-05-15 15:15     ` David Howells
2020-05-15 15:15     ` David Howells
2020-05-15 15:15     ` David Howells
2020-05-13 13:24 ` [PATCH 20/33] ipv4: add ip_sock_set_recverr David Howells
2020-05-13 13:24   ` [Cluster-devel] " David Howells
2020-05-13 13:24   ` [Ocfs2-devel] " David Howells
2020-05-13 13:24   ` David Howells
2020-05-13 13:24   ` David Howells
2020-05-13 13:24   ` David Howells
2020-05-13 13:25 ` [PATCH 23/33] ipv6: add ip6_sock_set_recverr David Howells
2020-05-13 13:25   ` [Cluster-devel] " David Howells
2020-05-13 13:25   ` [Ocfs2-devel] " David Howells
2020-05-13 13:25   ` David Howells
2020-05-13 13:25   ` David Howells
2020-05-13 13:25   ` David Howells
2020-05-13 13:27 ` [PATCH 06/33] net: add sock_set_timestamps David Howells
2020-05-13 13:27   ` [Cluster-devel] " David Howells
2020-05-13 13:27   ` [Ocfs2-devel] " David Howells
2020-05-13 13:27   ` David Howells
2020-05-13 13:27   ` David Howells
2020-05-13 13:27   ` David Howells
2020-05-13 17:38 ` remove kernel_setsockopt and kernel_getsockopt Joe Perches
2020-05-13 17:38   ` [Cluster-devel] " Joe Perches
2020-05-13 17:38   ` [Ocfs2-devel] " Joe Perches
2020-05-13 17:38   ` Joe Perches
2020-05-13 17:38   ` Joe Perches
2020-05-14  6:27   ` Christoph Hellwig
2020-05-14  6:27     ` [Cluster-devel] " Christoph Hellwig
2020-05-14  6:27     ` [Ocfs2-devel] " Christoph Hellwig
2020-05-14  6:27     ` Christoph Hellwig
2020-05-14  6:27     ` Christoph Hellwig
2020-05-14  6:27     ` Christoph Hellwig
2020-05-14  8:29   ` David Laight
2020-05-14  8:29     ` [Cluster-devel] " David Laight
2020-05-14  8:29     ` [Ocfs2-devel] " David Laight
2020-05-14  8:29     ` David Laight
2020-05-14  8:29     ` David Laight
2020-05-14 10:18     ` Christoph Hellwig
2020-05-14 10:18       ` [Cluster-devel] " Christoph Hellwig
2020-05-14 10:18       ` [Ocfs2-devel] " Christoph Hellwig
2020-05-14 10:18       ` Christoph Hellwig
2020-05-14 10:18       ` Christoph Hellwig
2020-05-14 10:18       ` Christoph Hellwig
2020-05-14 10:26       ` David Laight
2020-05-14 10:26         ` [Cluster-devel] " David Laight
2020-05-14 10:26         ` [Ocfs2-devel] " David Laight
2020-05-14 10:26         ` David Laight
2020-05-14 10:26         ` David Laight
2020-05-14 10:26         ` David Laight
2020-05-14 10:34         ` 'Christoph Hellwig'
2020-05-14 10:34           ` [Cluster-devel] " 'Christoph Hellwig'
2020-05-14 10:34           ` [Ocfs2-devel] " 'Christoph Hellwig'
2020-05-14 10:34           ` 'Christoph Hellwig'
2020-05-14 10:34           ` 'Christoph Hellwig'
2020-05-14 10:34           ` 'Christoph Hellwig'
2020-05-14 11:11           ` David Laight
2020-05-14 11:11             ` [Cluster-devel] " David Laight
2020-05-14 11:11             ` [Ocfs2-devel] " David Laight
2020-05-14 11:11             ` David Laight
2020-05-14 11:11             ` David Laight
2020-05-14 19:35             ` [Ocfs2-devel] " Matthew Wilcox
2020-05-14 19:35               ` [Cluster-devel] " Matthew Wilcox
2020-05-14 19:35               ` Matthew Wilcox
2020-05-14 19:35               ` Matthew Wilcox
2020-05-14 19:35               ` Matthew Wilcox
2020-05-14 19:35               ` Matthew Wilcox
2020-05-14 20:03         ` David Miller
2020-05-14 20:03           ` [Cluster-devel] " David Miller
2020-05-14 20:03           ` [Ocfs2-devel] " David Miller
2020-05-14 20:03           ` David Miller
2020-05-14 20:03           ` David Miller
2020-05-14 20:03           ` David Miller
2020-05-15  8:14           ` David Laight
2020-05-15  8:14             ` [Cluster-devel] " David Laight
2020-05-15  8:14             ` [Ocfs2-devel] " David Laight
2020-05-15  8:14             ` David Laight
2020-05-15  8:14             ` David Laight
2020-05-15  8:14             ` David Laight
2020-05-14 19:57     ` David Miller
2020-05-14 19:57       ` [Cluster-devel] " David Miller
2020-05-14 19:57       ` [Ocfs2-devel] " David Miller
2020-05-14 19:57       ` David Miller
2020-05-14 19:57       ` David Miller
2020-05-14 19:57       ` David Miller
2020-05-13 18:45 ` Sagi Grimberg
2020-05-13 18:45   ` [Cluster-devel] " Sagi Grimberg
2020-05-13 18:45   ` [Ocfs2-devel] " Sagi Grimberg
2020-05-13 18:45   ` Sagi Grimberg
2020-05-13 18:45   ` Sagi Grimberg
2020-05-13 19:12 ` David Miller
2020-05-13 19:12   ` [Cluster-devel] " David Miller
2020-05-13 19:12   ` [Ocfs2-devel] " David Miller
2020-05-13 19:12   ` David Miller
2020-05-13 19:12   ` David Miller
2020-05-20 19:54 remove kernel_setsockopt and kernel_getsockopt v2 Christoph Hellwig
2020-05-20 19:54 ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54 ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54 ` Christoph Hellwig
2020-05-20 19:54 ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 01/33] dlm: use the tcp version of accept_from_sock for sctp as well Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 02/33] net: remove kernel_getsockopt Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 03/33] net: add sock_set_reuseaddr Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 04/33] net: add sock_no_linger Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 05/33] net: add sock_set_priority Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 06/33] net: add sock_set_sndtimeo Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 07/33] net: add sock_bindtoindex Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 08/33] net: add sock_enable_timestamps Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 09/33] net: add sock_set_keepalive Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 10/33] net: add sock_set_rcvbuf Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 11/33] net: add sock_set_reuseport Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 12/33] tcp: add tcp_sock_set_cork Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 13/33] tcp: add tcp_sock_set_nodelay Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 14/33] tcp: add tcp_sock_set_quickack Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 15/33] tcp: add tcp_sock_set_syncnt Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 16/33] tcp: add tcp_sock_set_user_timeout Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 17/33] tcp: add tcp_sock_set_keepidle Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 18/33] tcp: add tcp_sock_set_keepintvl Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 19/33] tcp: add tcp_sock_set_keepcnt Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 20/33] ipv4: add ip_sock_set_tos Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 21/33] ipv4: add ip_sock_set_freebind Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 22/33] ipv4: add ip_sock_set_recverr Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54 ` [PATCH 23/33] ipv4: add ip_sock_set_mtu_discover Christoph Hellwig
2020-05-20 19:54   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:54   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:54   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 24/33] ipv4: add ip_sock_set_pktinfo Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 25/33] ipv6: add ip6_sock_set_v6only Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 26/33] ipv6: add ip6_sock_set_recverr Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 27/33] ipv6: add ip6_sock_set_addr_preferences Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 28/33] ipv6: add ip6_sock_set_recvpktinfo Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 29/33] rxrpc: add rxrpc_sock_set_min_security_level Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 30/33] tipc: call tsk_set_importance from tipc_topsrv_create_listener Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 31/33] sctp: add sctp_sock_set_nodelay Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 23:10   ` Marcelo Ricardo Leitner
2020-05-20 23:10     ` [Cluster-devel] " Marcelo Ricardo Leitner
2020-05-20 23:10     ` [Ocfs2-devel] " Marcelo Ricardo Leitner
2020-05-20 23:10     ` Marcelo Ricardo Leitner
2020-05-20 23:10     ` Marcelo Ricardo Leitner
2020-05-20 23:10     ` Marcelo Ricardo Leitner
2020-05-20 23:23     ` David Miller
2020-05-20 23:23       ` [Cluster-devel] " David Miller
2020-05-20 23:23       ` [Ocfs2-devel] " David Miller
2020-05-20 23:23       ` David Miller
2020-05-20 23:23       ` David Miller
2020-05-20 23:39       ` Marcelo Ricardo Leitner
2020-05-20 23:39         ` [Cluster-devel] " Marcelo Ricardo Leitner
2020-05-20 23:39         ` [Ocfs2-devel] " Marcelo Ricardo Leitner
2020-05-20 23:39         ` Marcelo Ricardo Leitner
2020-05-20 23:39         ` Marcelo Ricardo Leitner
2020-05-20 23:39         ` Marcelo Ricardo Leitner
2020-05-21  8:34         ` Christoph Hellwig
2020-05-21  8:34           ` [Cluster-devel] " Christoph Hellwig
2020-05-21  8:34           ` [Ocfs2-devel] " Christoph Hellwig
2020-05-21  8:34           ` Christoph Hellwig
2020-05-21  8:34           ` Christoph Hellwig
2020-05-21  8:34           ` Christoph Hellwig
2020-05-21  9:06           ` David Laight
2020-05-21  9:06             ` [Cluster-devel] " David Laight
2020-05-21  9:06             ` [Ocfs2-devel] " David Laight
2020-05-21  9:06             ` David Laight
2020-05-21  9:06             ` David Laight
2020-05-21  9:06             ` David Laight
2020-05-21  9:08             ` 'Christoph Hellwig'
2020-05-21  9:08               ` [Cluster-devel] " 'Christoph Hellwig'
2020-05-21  9:08               ` [Ocfs2-devel] " 'Christoph Hellwig'
2020-05-21  9:08               ` 'Christoph Hellwig'
2020-05-21  9:08               ` 'Christoph Hellwig'
2020-05-21  9:08               ` 'Christoph Hellwig'
2020-05-21  9:08               ` 'Christoph Hellwig'
2020-05-21 13:33           ` Marcelo Ricardo Leitner
2020-05-21 13:33             ` [Cluster-devel] " Marcelo Ricardo Leitner
2020-05-21 13:33             ` [Ocfs2-devel] " Marcelo Ricardo Leitner
2020-05-21 13:33             ` Marcelo Ricardo Leitner
2020-05-21 13:33             ` Marcelo Ricardo Leitner
2020-05-21 13:33             ` Marcelo Ricardo Leitner
2020-05-21 13:57             ` Christoph Hellwig
2020-05-21 13:57               ` [Cluster-devel] " Christoph Hellwig
2020-05-21 13:57               ` [Ocfs2-devel] " Christoph Hellwig
2020-05-21 13:57               ` Christoph Hellwig
2020-05-21 13:57               ` Christoph Hellwig
2020-05-21 13:57               ` Christoph Hellwig
2020-05-20 19:55 ` [PATCH 32/33] net: add a new bind_add method Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 23:00   ` Marcelo Ricardo Leitner
2020-05-20 23:00     ` [Cluster-devel] " Marcelo Ricardo Leitner
2020-05-20 23:00     ` [Ocfs2-devel] " Marcelo Ricardo Leitner
2020-05-20 23:00     ` Marcelo Ricardo Leitner
2020-05-20 23:00     ` Marcelo Ricardo Leitner
2020-05-21  8:42     ` Christoph Hellwig
2020-05-21  8:42       ` [Cluster-devel] " Christoph Hellwig
2020-05-21  8:42       ` [Ocfs2-devel] " Christoph Hellwig
2020-05-21  8:42       ` Christoph Hellwig
2020-05-21  8:42       ` Christoph Hellwig
2020-05-21  8:42       ` Christoph Hellwig
2020-05-21 13:54       ` Marcelo Ricardo Leitner
2020-05-21 13:54         ` [Cluster-devel] " Marcelo Ricardo Leitner
2020-05-21 13:54         ` [Ocfs2-devel] " Marcelo Ricardo Leitner
2020-05-21 13:54         ` Marcelo Ricardo Leitner
2020-05-21 13:54         ` Marcelo Ricardo Leitner
2020-05-20 19:55 ` [PATCH 33/33] net: remove kernel_setsockopt Christoph Hellwig
2020-05-20 19:55   ` [Cluster-devel] " Christoph Hellwig
2020-05-20 19:55   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-20 19:55   ` Christoph Hellwig
2020-05-21  7:44 ` [PATCH 29/33] rxrpc: add rxrpc_sock_set_min_security_level David Howells
2020-05-21  7:44   ` [Cluster-devel] " David Howells
2020-05-21  7:44   ` [Ocfs2-devel] " David Howells
2020-05-21  7:44   ` David Howells
2020-05-21  7:44   ` David Howells
2020-05-21  7:44   ` David Howells
2020-05-21  8:01 ` remove kernel_setsockopt and kernel_getsockopt v2 David Laight
2020-05-21  8:01   ` [Cluster-devel] " David Laight
2020-05-21  8:01   ` [Ocfs2-devel] " David Laight
2020-05-21  8:01   ` David Laight
2020-05-21  8:01   ` David Laight
2020-05-21  9:11   ` 'Christoph Hellwig'
2020-05-21  9:11     ` [Cluster-devel] " 'Christoph Hellwig'
2020-05-21  9:11     ` [Ocfs2-devel] " 'Christoph Hellwig'
2020-05-21  9:11     ` 'Christoph Hellwig'
2020-05-21  9:11     ` 'Christoph Hellwig'
2020-05-21  9:11     ` 'Christoph Hellwig'
2020-05-21 10:46     ` David Laight
2020-05-21 10:46       ` [Cluster-devel] " David Laight
2020-05-21 10:46       ` [Ocfs2-devel] " David Laight
2020-05-21 10:46       ` David Laight
2020-05-21 10:46       ` David Laight
2020-05-21 10:46       ` David Laight
2020-05-23  7:23 ` Christoph Hellwig
2020-05-23  7:23   ` [Cluster-devel] " Christoph Hellwig
2020-05-23  7:23   ` [Ocfs2-devel] " Christoph Hellwig
2020-05-23  7:23   ` Christoph Hellwig
2020-05-23  7:23   ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200513062649.2100053-3-hch@lst.de \
    --to=hch@lst.de \
    --cc=ceph-devel@vger.kernel.org \
    --cc=cluster-devel@redhat.com \
    --cc=davem@davemloft.net \
    --cc=drbd-dev@lists.linbit.com \
    --cc=edumazet@google.com \
    --cc=jmaloy@redhat.com \
    --cc=kuba@kernel.org \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-afs@lists.infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-sctp@vger.kernel.org \
    --cc=marcelo.leitner@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@tuxdriver.com \
    --cc=ocfs2-devel@oss.oracle.com \
    --cc=rds-devel@oss.oracle.com \
    --cc=target-devel@vger.kernel.org \
    --cc=vyasevich@gmail.com \
    --cc=ying.xue@windriver.com \
    --cc=yoshfuji@linux-ipv6.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.