All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch at lst.de>
To: mptcp at lists.01.org
Subject: [MPTCP] [PATCH 15/24] net/ipv4: switch do_ip_setsockopt to sockptr_t
Date: Mon, 20 Jul 2020 14:47:28 +0200	[thread overview]
Message-ID: <20200720124737.118617-16-hch@lst.de> (raw)
In-Reply-To: 20200720124737.118617-1-hch@lst.de

[-- Attachment #1: Type: text/plain, Size: 8923 bytes --]

Pass a sockptr_t to prepare for set_fs-less handling of the kernel
pointer from bpf-cgroup.

Signed-off-by: Christoph Hellwig <hch(a)lst.de>
---
 net/ipv4/ip_sockglue.c | 68 ++++++++++++++++++++----------------------
 1 file changed, 33 insertions(+), 35 deletions(-)

diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index b12f39b52008a3..f7f1507b89fe24 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -683,15 +683,15 @@ static int set_mcast_msfilter(struct sock *sk, int ifindex,
 	return -EADDRNOTAVAIL;
 }
 
-static int copy_group_source_from_user(struct group_source_req *greqs,
-		void __user *optval, int optlen)
+static int copy_group_source_from_sockptr(struct group_source_req *greqs,
+		sockptr_t optval, int optlen)
 {
 	if (in_compat_syscall()) {
 		struct compat_group_source_req gr32;
 
 		if (optlen != sizeof(gr32))
 			return -EINVAL;
-		if (copy_from_user(&gr32, optval, sizeof(gr32)))
+		if (copy_from_sockptr(&gr32, optval, sizeof(gr32)))
 			return -EFAULT;
 		greqs->gsr_interface = gr32.gsr_interface;
 		greqs->gsr_group = gr32.gsr_group;
@@ -699,7 +699,7 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 	} else {
 		if (optlen != sizeof(*greqs))
 			return -EINVAL;
-		if (copy_from_user(greqs, optval, sizeof(*greqs)))
+		if (copy_from_sockptr(greqs, optval, sizeof(*greqs)))
 			return -EFAULT;
 	}
 
@@ -707,14 +707,14 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 }
 
 static int do_mcast_group_source(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct group_source_req greqs;
 	struct ip_mreq_source mreqs;
 	struct sockaddr_in *psin;
 	int omode, add, err;
 
-	err = copy_group_source_from_user(&greqs, optval, optlen);
+	err = copy_group_source_from_sockptr(&greqs, optval, optlen);
 	if (err)
 		return err;
 
@@ -754,8 +754,7 @@ static int do_mcast_group_source(struct sock *sk, int optname,
 	return ip_mc_source(add, omode, sk, &mreqs, greqs.gsr_interface);
 }
 
-static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
-		int optlen)
+static int ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval, int optlen)
 {
 	struct group_filter *gsf = NULL;
 	int err;
@@ -765,7 +764,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	if (optlen > sysctl_optmem_max)
 		return -ENOBUFS;
 
-	gsf = memdup_user(optval, optlen);
+	gsf = memdup_sockptr(optval, optlen);
 	if (IS_ERR(gsf))
 		return PTR_ERR(gsf);
 
@@ -786,7 +785,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	return err;
 }
 
-static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
+static int compat_ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval,
 		int optlen)
 {
 	const int size0 = offsetof(struct compat_group_filter, gf_slist);
@@ -806,7 +805,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	gf32 = p + 4; /* we want ->gf_group and ->gf_slist aligned */
 
 	err = -EFAULT;
-	if (copy_from_user(gf32, optval, optlen))
+	if (copy_from_sockptr(gf32, optval, optlen))
 		goto out_free_gsf;
 
 	/* numsrc >= (4G-140)/128 overflow in 32 bits */
@@ -831,7 +830,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 }
 
 static int ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct ip_mreqn mreq = { };
 	struct sockaddr_in *psin;
@@ -839,7 +838,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -853,7 +852,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 }
 
 static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct compat_group_req greq;
 	struct ip_mreqn mreq = { };
@@ -861,7 +860,7 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct compat_group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -875,8 +874,8 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 	return ip_mc_leave_group(sk, &mreq);
 }
 
-static int do_ip_setsockopt(struct sock *sk, int level,
-			    int optname, char __user *optval, unsigned int optlen)
+static int do_ip_setsockopt(struct sock *sk, int level, int optname,
+		sockptr_t optval, unsigned int optlen)
 {
 	struct inet_sock *inet = inet_sk(sk);
 	struct net *net = sock_net(sk);
@@ -910,12 +909,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	case IP_RECVFRAGSIZE:
 	case IP_RECVERR_RFC4884:
 		if (optlen >= sizeof(int)) {
-			if (get_user(val, (int __user *) optval))
+			if (copy_from_sockptr(&val, optval, sizeof(val)))
 				return -EFAULT;
 		} else if (optlen >= sizeof(char)) {
 			unsigned char ucval;
 
-			if (get_user(ucval, (unsigned char __user *) optval))
+			if (copy_from_sockptr(&ucval, optval, sizeof(ucval)))
 				return -EFAULT;
 			val = (int) ucval;
 		}
@@ -926,8 +925,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	if (optname == IP_ROUTER_ALERT)
 		return ip_ra_control(sk, val ? 1 : 0, NULL);
 	if (ip_mroute_opt(optname))
-		return ip_mroute_setsockopt(sk, optname, USER_SOCKPTR(optval),
-					    optlen);
+		return ip_mroute_setsockopt(sk, optname, optval, optlen);
 
 	err = 0;
 	if (needs_rtnl)
@@ -941,8 +939,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen > 40)
 			goto e_inval;
-		err = ip_options_get(sock_net(sk), &opt, USER_SOCKPTR(optval),
-					      optlen);
+		err = ip_options_get(sock_net(sk), &opt, optval, optlen);
 		if (err)
 			break;
 		old = rcu_dereference_protected(inet->inet_opt,
@@ -1140,17 +1137,17 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
 			if (optlen >= sizeof(struct ip_mreq)) {
-				if (copy_from_user(&mreq, optval,
-						   sizeof(struct ip_mreq)))
+				if (copy_from_sockptr(&mreq, optval,
+						      sizeof(struct ip_mreq)))
 					break;
 			} else if (optlen >= sizeof(struct in_addr)) {
-				if (copy_from_user(&mreq.imr_address, optval,
-						   sizeof(struct in_addr)))
+				if (copy_from_sockptr(&mreq.imr_address, optval,
+						      sizeof(struct in_addr)))
 					break;
 			}
 		}
@@ -1202,11 +1199,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			goto e_inval;
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
-			if (copy_from_user(&mreq, optval, sizeof(struct ip_mreq)))
+			if (copy_from_sockptr(&mreq, optval,
+					      sizeof(struct ip_mreq)))
 				break;
 		}
 
@@ -1226,7 +1224,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			err = -ENOBUFS;
 			break;
 		}
-		msf = memdup_user(optval, optlen);
+		msf = memdup_sockptr(optval, optlen);
 		if (IS_ERR(msf)) {
 			err = PTR_ERR(msf);
 			break;
@@ -1257,7 +1255,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen != sizeof(struct ip_mreq_source))
 			goto e_inval;
-		if (copy_from_user(&mreqs, optval, sizeof(mreqs))) {
+		if (copy_from_sockptr(&mreqs, optval, sizeof(mreqs))) {
 			err = -EFAULT;
 			break;
 		}
@@ -1324,8 +1322,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 		err = -EPERM;
 		if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
 			break;
-		err = xfrm_user_policy(sk, optname, USER_SOCKPTR(optval),
-				       optlen);
+		err = xfrm_user_policy(sk, optname, optval, optlen);
 		break;
 
 	case IP_TRANSPARENT:
@@ -1412,7 +1409,8 @@ int ip_setsockopt(struct sock *sk, int level,
 	if (level != SOL_IP)
 		return -ENOPROTOOPT;
 
-	err = do_ip_setsockopt(sk, level, optname, optval, optlen);
+	err = do_ip_setsockopt(sk, level, optname, USER_SOCKPTR(optval),
+			       optlen);
 #if IS_ENABLED(CONFIG_BPFILTER_UMH)
 	if (optname >= BPFILTER_IPT_SO_SET_REPLACE &&
 	    optname < BPFILTER_IPT_SET_MAX)
-- 
2.27.0

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>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	Eric Dumazet <edumazet@google.com>
Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
	netdev@vger.kernel.org, bpf@vger.kernel.org,
	netfilter-devel@vger.kernel.org, coreteam@netfilter.org,
	linux-sctp@vger.kernel.org, linux-hams@vger.kernel.org,
	linux-bluetooth@vger.kernel.org,
	bridge@lists.linux-foundation.org, linux-can@vger.kernel.org,
	dccp@vger.kernel.org, linux-decnet-user@lists.sourceforge.net,
	linux-wpan@vger.kernel.org, linux-s390@vger.kernel.org,
	mptcp@lists.01.org, lvs-devel@vger.kernel.org,
	rds-devel@oss.oracle.com, linux-afs@lists.infradead.org,
	tipc-discussion@lists.sourceforge.net, linux-x25@vger.kernel.org
Subject: [PATCH 15/24] net/ipv4: switch do_ip_setsockopt to sockptr_t
Date: Mon, 20 Jul 2020 14:47:28 +0200	[thread overview]
Message-ID: <20200720124737.118617-16-hch@lst.de> (raw)
In-Reply-To: <20200720124737.118617-1-hch@lst.de>

Pass a sockptr_t to prepare for set_fs-less handling of the kernel
pointer from bpf-cgroup.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 net/ipv4/ip_sockglue.c | 68 ++++++++++++++++++++----------------------
 1 file changed, 33 insertions(+), 35 deletions(-)

diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index b12f39b52008a3..f7f1507b89fe24 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -683,15 +683,15 @@ static int set_mcast_msfilter(struct sock *sk, int ifindex,
 	return -EADDRNOTAVAIL;
 }
 
-static int copy_group_source_from_user(struct group_source_req *greqs,
-		void __user *optval, int optlen)
+static int copy_group_source_from_sockptr(struct group_source_req *greqs,
+		sockptr_t optval, int optlen)
 {
 	if (in_compat_syscall()) {
 		struct compat_group_source_req gr32;
 
 		if (optlen != sizeof(gr32))
 			return -EINVAL;
-		if (copy_from_user(&gr32, optval, sizeof(gr32)))
+		if (copy_from_sockptr(&gr32, optval, sizeof(gr32)))
 			return -EFAULT;
 		greqs->gsr_interface = gr32.gsr_interface;
 		greqs->gsr_group = gr32.gsr_group;
@@ -699,7 +699,7 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 	} else {
 		if (optlen != sizeof(*greqs))
 			return -EINVAL;
-		if (copy_from_user(greqs, optval, sizeof(*greqs)))
+		if (copy_from_sockptr(greqs, optval, sizeof(*greqs)))
 			return -EFAULT;
 	}
 
@@ -707,14 +707,14 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 }
 
 static int do_mcast_group_source(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct group_source_req greqs;
 	struct ip_mreq_source mreqs;
 	struct sockaddr_in *psin;
 	int omode, add, err;
 
-	err = copy_group_source_from_user(&greqs, optval, optlen);
+	err = copy_group_source_from_sockptr(&greqs, optval, optlen);
 	if (err)
 		return err;
 
@@ -754,8 +754,7 @@ static int do_mcast_group_source(struct sock *sk, int optname,
 	return ip_mc_source(add, omode, sk, &mreqs, greqs.gsr_interface);
 }
 
-static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
-		int optlen)
+static int ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval, int optlen)
 {
 	struct group_filter *gsf = NULL;
 	int err;
@@ -765,7 +764,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	if (optlen > sysctl_optmem_max)
 		return -ENOBUFS;
 
-	gsf = memdup_user(optval, optlen);
+	gsf = memdup_sockptr(optval, optlen);
 	if (IS_ERR(gsf))
 		return PTR_ERR(gsf);
 
@@ -786,7 +785,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	return err;
 }
 
-static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
+static int compat_ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval,
 		int optlen)
 {
 	const int size0 = offsetof(struct compat_group_filter, gf_slist);
@@ -806,7 +805,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	gf32 = p + 4; /* we want ->gf_group and ->gf_slist aligned */
 
 	err = -EFAULT;
-	if (copy_from_user(gf32, optval, optlen))
+	if (copy_from_sockptr(gf32, optval, optlen))
 		goto out_free_gsf;
 
 	/* numsrc >= (4G-140)/128 overflow in 32 bits */
@@ -831,7 +830,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 }
 
 static int ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct ip_mreqn mreq = { };
 	struct sockaddr_in *psin;
@@ -839,7 +838,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -853,7 +852,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 }
 
 static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct compat_group_req greq;
 	struct ip_mreqn mreq = { };
@@ -861,7 +860,7 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct compat_group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -875,8 +874,8 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 	return ip_mc_leave_group(sk, &mreq);
 }
 
-static int do_ip_setsockopt(struct sock *sk, int level,
-			    int optname, char __user *optval, unsigned int optlen)
+static int do_ip_setsockopt(struct sock *sk, int level, int optname,
+		sockptr_t optval, unsigned int optlen)
 {
 	struct inet_sock *inet = inet_sk(sk);
 	struct net *net = sock_net(sk);
@@ -910,12 +909,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	case IP_RECVFRAGSIZE:
 	case IP_RECVERR_RFC4884:
 		if (optlen >= sizeof(int)) {
-			if (get_user(val, (int __user *) optval))
+			if (copy_from_sockptr(&val, optval, sizeof(val)))
 				return -EFAULT;
 		} else if (optlen >= sizeof(char)) {
 			unsigned char ucval;
 
-			if (get_user(ucval, (unsigned char __user *) optval))
+			if (copy_from_sockptr(&ucval, optval, sizeof(ucval)))
 				return -EFAULT;
 			val = (int) ucval;
 		}
@@ -926,8 +925,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	if (optname == IP_ROUTER_ALERT)
 		return ip_ra_control(sk, val ? 1 : 0, NULL);
 	if (ip_mroute_opt(optname))
-		return ip_mroute_setsockopt(sk, optname, USER_SOCKPTR(optval),
-					    optlen);
+		return ip_mroute_setsockopt(sk, optname, optval, optlen);
 
 	err = 0;
 	if (needs_rtnl)
@@ -941,8 +939,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen > 40)
 			goto e_inval;
-		err = ip_options_get(sock_net(sk), &opt, USER_SOCKPTR(optval),
-					      optlen);
+		err = ip_options_get(sock_net(sk), &opt, optval, optlen);
 		if (err)
 			break;
 		old = rcu_dereference_protected(inet->inet_opt,
@@ -1140,17 +1137,17 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
 			if (optlen >= sizeof(struct ip_mreq)) {
-				if (copy_from_user(&mreq, optval,
-						   sizeof(struct ip_mreq)))
+				if (copy_from_sockptr(&mreq, optval,
+						      sizeof(struct ip_mreq)))
 					break;
 			} else if (optlen >= sizeof(struct in_addr)) {
-				if (copy_from_user(&mreq.imr_address, optval,
-						   sizeof(struct in_addr)))
+				if (copy_from_sockptr(&mreq.imr_address, optval,
+						      sizeof(struct in_addr)))
 					break;
 			}
 		}
@@ -1202,11 +1199,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			goto e_inval;
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
-			if (copy_from_user(&mreq, optval, sizeof(struct ip_mreq)))
+			if (copy_from_sockptr(&mreq, optval,
+					      sizeof(struct ip_mreq)))
 				break;
 		}
 
@@ -1226,7 +1224,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			err = -ENOBUFS;
 			break;
 		}
-		msf = memdup_user(optval, optlen);
+		msf = memdup_sockptr(optval, optlen);
 		if (IS_ERR(msf)) {
 			err = PTR_ERR(msf);
 			break;
@@ -1257,7 +1255,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen != sizeof(struct ip_mreq_source))
 			goto e_inval;
-		if (copy_from_user(&mreqs, optval, sizeof(mreqs))) {
+		if (copy_from_sockptr(&mreqs, optval, sizeof(mreqs))) {
 			err = -EFAULT;
 			break;
 		}
@@ -1324,8 +1322,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 		err = -EPERM;
 		if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
 			break;
-		err = xfrm_user_policy(sk, optname, USER_SOCKPTR(optval),
-				       optlen);
+		err = xfrm_user_policy(sk, optname, optval, optlen);
 		break;
 
 	case IP_TRANSPARENT:
@@ -1412,7 +1409,8 @@ int ip_setsockopt(struct sock *sk, int level,
 	if (level != SOL_IP)
 		return -ENOPROTOOPT;
 
-	err = do_ip_setsockopt(sk, level, optname, optval, optlen);
+	err = do_ip_setsockopt(sk, level, optname, USER_SOCKPTR(optval),
+			       optlen);
 #if IS_ENABLED(CONFIG_BPFILTER_UMH)
 	if (optname >= BPFILTER_IPT_SO_SET_REPLACE &&
 	    optname < BPFILTER_IPT_SET_MAX)
-- 
2.27.0


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>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	Eric Dumazet <edumazet@google.com>
Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
	netdev@vger.kernel.org, bpf@vger.kernel.org,
	netfilter-devel@vger.kernel.org, coreteam@netfilter.org,
	linux-sctp@vger.kernel.org, linux-hams@vger.kernel.org,
	linux-bluetooth@vger.kernel.org,
	bridge@lists.linux-foundation.org, linux-can@vger.kernel.org,
	dccp@vger.kernel.org, linux-decnet-user@lists.sourceforge.net,
	linux-wpan@vger.kernel.org, linux-s390@vger.kernel.org,
	mptcp@lists.01.org, lvs-devel@vger.kernel.org,
	rds-devel@oss.oracle.com, linux-afs@lists.infradead.org,
	tipc-discussion@lists.sourceforge.net, linux-x25@vger.kernel.org
Subject: [PATCH 15/24] net/ipv4: switch do_ip_setsockopt to sockptr_t
Date: Mon, 20 Jul 2020 12:47:28 +0000	[thread overview]
Message-ID: <20200720124737.118617-16-hch@lst.de> (raw)
In-Reply-To: <20200720124737.118617-1-hch@lst.de>

Pass a sockptr_t to prepare for set_fs-less handling of the kernel
pointer from bpf-cgroup.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 net/ipv4/ip_sockglue.c | 68 ++++++++++++++++++++----------------------
 1 file changed, 33 insertions(+), 35 deletions(-)

diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index b12f39b52008a3..f7f1507b89fe24 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -683,15 +683,15 @@ static int set_mcast_msfilter(struct sock *sk, int ifindex,
 	return -EADDRNOTAVAIL;
 }
 
-static int copy_group_source_from_user(struct group_source_req *greqs,
-		void __user *optval, int optlen)
+static int copy_group_source_from_sockptr(struct group_source_req *greqs,
+		sockptr_t optval, int optlen)
 {
 	if (in_compat_syscall()) {
 		struct compat_group_source_req gr32;
 
 		if (optlen != sizeof(gr32))
 			return -EINVAL;
-		if (copy_from_user(&gr32, optval, sizeof(gr32)))
+		if (copy_from_sockptr(&gr32, optval, sizeof(gr32)))
 			return -EFAULT;
 		greqs->gsr_interface = gr32.gsr_interface;
 		greqs->gsr_group = gr32.gsr_group;
@@ -699,7 +699,7 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 	} else {
 		if (optlen != sizeof(*greqs))
 			return -EINVAL;
-		if (copy_from_user(greqs, optval, sizeof(*greqs)))
+		if (copy_from_sockptr(greqs, optval, sizeof(*greqs)))
 			return -EFAULT;
 	}
 
@@ -707,14 +707,14 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 }
 
 static int do_mcast_group_source(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct group_source_req greqs;
 	struct ip_mreq_source mreqs;
 	struct sockaddr_in *psin;
 	int omode, add, err;
 
-	err = copy_group_source_from_user(&greqs, optval, optlen);
+	err = copy_group_source_from_sockptr(&greqs, optval, optlen);
 	if (err)
 		return err;
 
@@ -754,8 +754,7 @@ static int do_mcast_group_source(struct sock *sk, int optname,
 	return ip_mc_source(add, omode, sk, &mreqs, greqs.gsr_interface);
 }
 
-static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
-		int optlen)
+static int ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval, int optlen)
 {
 	struct group_filter *gsf = NULL;
 	int err;
@@ -765,7 +764,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	if (optlen > sysctl_optmem_max)
 		return -ENOBUFS;
 
-	gsf = memdup_user(optval, optlen);
+	gsf = memdup_sockptr(optval, optlen);
 	if (IS_ERR(gsf))
 		return PTR_ERR(gsf);
 
@@ -786,7 +785,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	return err;
 }
 
-static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
+static int compat_ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval,
 		int optlen)
 {
 	const int size0 = offsetof(struct compat_group_filter, gf_slist);
@@ -806,7 +805,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	gf32 = p + 4; /* we want ->gf_group and ->gf_slist aligned */
 
 	err = -EFAULT;
-	if (copy_from_user(gf32, optval, optlen))
+	if (copy_from_sockptr(gf32, optval, optlen))
 		goto out_free_gsf;
 
 	/* numsrc >= (4G-140)/128 overflow in 32 bits */
@@ -831,7 +830,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 }
 
 static int ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct ip_mreqn mreq = { };
 	struct sockaddr_in *psin;
@@ -839,7 +838,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -853,7 +852,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 }
 
 static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct compat_group_req greq;
 	struct ip_mreqn mreq = { };
@@ -861,7 +860,7 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct compat_group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -875,8 +874,8 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 	return ip_mc_leave_group(sk, &mreq);
 }
 
-static int do_ip_setsockopt(struct sock *sk, int level,
-			    int optname, char __user *optval, unsigned int optlen)
+static int do_ip_setsockopt(struct sock *sk, int level, int optname,
+		sockptr_t optval, unsigned int optlen)
 {
 	struct inet_sock *inet = inet_sk(sk);
 	struct net *net = sock_net(sk);
@@ -910,12 +909,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	case IP_RECVFRAGSIZE:
 	case IP_RECVERR_RFC4884:
 		if (optlen >= sizeof(int)) {
-			if (get_user(val, (int __user *) optval))
+			if (copy_from_sockptr(&val, optval, sizeof(val)))
 				return -EFAULT;
 		} else if (optlen >= sizeof(char)) {
 			unsigned char ucval;
 
-			if (get_user(ucval, (unsigned char __user *) optval))
+			if (copy_from_sockptr(&ucval, optval, sizeof(ucval)))
 				return -EFAULT;
 			val = (int) ucval;
 		}
@@ -926,8 +925,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	if (optname = IP_ROUTER_ALERT)
 		return ip_ra_control(sk, val ? 1 : 0, NULL);
 	if (ip_mroute_opt(optname))
-		return ip_mroute_setsockopt(sk, optname, USER_SOCKPTR(optval),
-					    optlen);
+		return ip_mroute_setsockopt(sk, optname, optval, optlen);
 
 	err = 0;
 	if (needs_rtnl)
@@ -941,8 +939,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen > 40)
 			goto e_inval;
-		err = ip_options_get(sock_net(sk), &opt, USER_SOCKPTR(optval),
-					      optlen);
+		err = ip_options_get(sock_net(sk), &opt, optval, optlen);
 		if (err)
 			break;
 		old = rcu_dereference_protected(inet->inet_opt,
@@ -1140,17 +1137,17 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
 			if (optlen >= sizeof(struct ip_mreq)) {
-				if (copy_from_user(&mreq, optval,
-						   sizeof(struct ip_mreq)))
+				if (copy_from_sockptr(&mreq, optval,
+						      sizeof(struct ip_mreq)))
 					break;
 			} else if (optlen >= sizeof(struct in_addr)) {
-				if (copy_from_user(&mreq.imr_address, optval,
-						   sizeof(struct in_addr)))
+				if (copy_from_sockptr(&mreq.imr_address, optval,
+						      sizeof(struct in_addr)))
 					break;
 			}
 		}
@@ -1202,11 +1199,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			goto e_inval;
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
-			if (copy_from_user(&mreq, optval, sizeof(struct ip_mreq)))
+			if (copy_from_sockptr(&mreq, optval,
+					      sizeof(struct ip_mreq)))
 				break;
 		}
 
@@ -1226,7 +1224,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			err = -ENOBUFS;
 			break;
 		}
-		msf = memdup_user(optval, optlen);
+		msf = memdup_sockptr(optval, optlen);
 		if (IS_ERR(msf)) {
 			err = PTR_ERR(msf);
 			break;
@@ -1257,7 +1255,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen != sizeof(struct ip_mreq_source))
 			goto e_inval;
-		if (copy_from_user(&mreqs, optval, sizeof(mreqs))) {
+		if (copy_from_sockptr(&mreqs, optval, sizeof(mreqs))) {
 			err = -EFAULT;
 			break;
 		}
@@ -1324,8 +1322,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 		err = -EPERM;
 		if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
 			break;
-		err = xfrm_user_policy(sk, optname, USER_SOCKPTR(optval),
-				       optlen);
+		err = xfrm_user_policy(sk, optname, optval, optlen);
 		break;
 
 	case IP_TRANSPARENT:
@@ -1412,7 +1409,8 @@ int ip_setsockopt(struct sock *sk, int level,
 	if (level != SOL_IP)
 		return -ENOPROTOOPT;
 
-	err = do_ip_setsockopt(sk, level, optname, optval, optlen);
+	err = do_ip_setsockopt(sk, level, optname, USER_SOCKPTR(optval),
+			       optlen);
 #if IS_ENABLED(CONFIG_BPFILTER_UMH)
 	if (optname >= BPFILTER_IPT_SO_SET_REPLACE &&
 	    optname < BPFILTER_IPT_SET_MAX)
-- 
2.27.0

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: dccp@vger.kernel.org
Subject: [PATCH 15/24] net/ipv4: switch do_ip_setsockopt to sockptr_t
Date: Mon, 20 Jul 2020 12:47:28 +0000	[thread overview]
Message-ID: <20200720124737.118617-16-hch@lst.de> (raw)

Pass a sockptr_t to prepare for set_fs-less handling of the kernel
pointer from bpf-cgroup.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 net/ipv4/ip_sockglue.c | 68 ++++++++++++++++++++----------------------
 1 file changed, 33 insertions(+), 35 deletions(-)

diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index b12f39b52008a3..f7f1507b89fe24 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -683,15 +683,15 @@ static int set_mcast_msfilter(struct sock *sk, int ifindex,
 	return -EADDRNOTAVAIL;
 }
 
-static int copy_group_source_from_user(struct group_source_req *greqs,
-		void __user *optval, int optlen)
+static int copy_group_source_from_sockptr(struct group_source_req *greqs,
+		sockptr_t optval, int optlen)
 {
 	if (in_compat_syscall()) {
 		struct compat_group_source_req gr32;
 
 		if (optlen != sizeof(gr32))
 			return -EINVAL;
-		if (copy_from_user(&gr32, optval, sizeof(gr32)))
+		if (copy_from_sockptr(&gr32, optval, sizeof(gr32)))
 			return -EFAULT;
 		greqs->gsr_interface = gr32.gsr_interface;
 		greqs->gsr_group = gr32.gsr_group;
@@ -699,7 +699,7 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 	} else {
 		if (optlen != sizeof(*greqs))
 			return -EINVAL;
-		if (copy_from_user(greqs, optval, sizeof(*greqs)))
+		if (copy_from_sockptr(greqs, optval, sizeof(*greqs)))
 			return -EFAULT;
 	}
 
@@ -707,14 +707,14 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 }
 
 static int do_mcast_group_source(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct group_source_req greqs;
 	struct ip_mreq_source mreqs;
 	struct sockaddr_in *psin;
 	int omode, add, err;
 
-	err = copy_group_source_from_user(&greqs, optval, optlen);
+	err = copy_group_source_from_sockptr(&greqs, optval, optlen);
 	if (err)
 		return err;
 
@@ -754,8 +754,7 @@ static int do_mcast_group_source(struct sock *sk, int optname,
 	return ip_mc_source(add, omode, sk, &mreqs, greqs.gsr_interface);
 }
 
-static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
-		int optlen)
+static int ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval, int optlen)
 {
 	struct group_filter *gsf = NULL;
 	int err;
@@ -765,7 +764,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	if (optlen > sysctl_optmem_max)
 		return -ENOBUFS;
 
-	gsf = memdup_user(optval, optlen);
+	gsf = memdup_sockptr(optval, optlen);
 	if (IS_ERR(gsf))
 		return PTR_ERR(gsf);
 
@@ -786,7 +785,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	return err;
 }
 
-static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
+static int compat_ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval,
 		int optlen)
 {
 	const int size0 = offsetof(struct compat_group_filter, gf_slist);
@@ -806,7 +805,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	gf32 = p + 4; /* we want ->gf_group and ->gf_slist aligned */
 
 	err = -EFAULT;
-	if (copy_from_user(gf32, optval, optlen))
+	if (copy_from_sockptr(gf32, optval, optlen))
 		goto out_free_gsf;
 
 	/* numsrc >= (4G-140)/128 overflow in 32 bits */
@@ -831,7 +830,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 }
 
 static int ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct ip_mreqn mreq = { };
 	struct sockaddr_in *psin;
@@ -839,7 +838,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -853,7 +852,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 }
 
 static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct compat_group_req greq;
 	struct ip_mreqn mreq = { };
@@ -861,7 +860,7 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct compat_group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -875,8 +874,8 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 	return ip_mc_leave_group(sk, &mreq);
 }
 
-static int do_ip_setsockopt(struct sock *sk, int level,
-			    int optname, char __user *optval, unsigned int optlen)
+static int do_ip_setsockopt(struct sock *sk, int level, int optname,
+		sockptr_t optval, unsigned int optlen)
 {
 	struct inet_sock *inet = inet_sk(sk);
 	struct net *net = sock_net(sk);
@@ -910,12 +909,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	case IP_RECVFRAGSIZE:
 	case IP_RECVERR_RFC4884:
 		if (optlen >= sizeof(int)) {
-			if (get_user(val, (int __user *) optval))
+			if (copy_from_sockptr(&val, optval, sizeof(val)))
 				return -EFAULT;
 		} else if (optlen >= sizeof(char)) {
 			unsigned char ucval;
 
-			if (get_user(ucval, (unsigned char __user *) optval))
+			if (copy_from_sockptr(&ucval, optval, sizeof(ucval)))
 				return -EFAULT;
 			val = (int) ucval;
 		}
@@ -926,8 +925,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	if (optname = IP_ROUTER_ALERT)
 		return ip_ra_control(sk, val ? 1 : 0, NULL);
 	if (ip_mroute_opt(optname))
-		return ip_mroute_setsockopt(sk, optname, USER_SOCKPTR(optval),
-					    optlen);
+		return ip_mroute_setsockopt(sk, optname, optval, optlen);
 
 	err = 0;
 	if (needs_rtnl)
@@ -941,8 +939,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen > 40)
 			goto e_inval;
-		err = ip_options_get(sock_net(sk), &opt, USER_SOCKPTR(optval),
-					      optlen);
+		err = ip_options_get(sock_net(sk), &opt, optval, optlen);
 		if (err)
 			break;
 		old = rcu_dereference_protected(inet->inet_opt,
@@ -1140,17 +1137,17 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
 			if (optlen >= sizeof(struct ip_mreq)) {
-				if (copy_from_user(&mreq, optval,
-						   sizeof(struct ip_mreq)))
+				if (copy_from_sockptr(&mreq, optval,
+						      sizeof(struct ip_mreq)))
 					break;
 			} else if (optlen >= sizeof(struct in_addr)) {
-				if (copy_from_user(&mreq.imr_address, optval,
-						   sizeof(struct in_addr)))
+				if (copy_from_sockptr(&mreq.imr_address, optval,
+						      sizeof(struct in_addr)))
 					break;
 			}
 		}
@@ -1202,11 +1199,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			goto e_inval;
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
-			if (copy_from_user(&mreq, optval, sizeof(struct ip_mreq)))
+			if (copy_from_sockptr(&mreq, optval,
+					      sizeof(struct ip_mreq)))
 				break;
 		}
 
@@ -1226,7 +1224,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			err = -ENOBUFS;
 			break;
 		}
-		msf = memdup_user(optval, optlen);
+		msf = memdup_sockptr(optval, optlen);
 		if (IS_ERR(msf)) {
 			err = PTR_ERR(msf);
 			break;
@@ -1257,7 +1255,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen != sizeof(struct ip_mreq_source))
 			goto e_inval;
-		if (copy_from_user(&mreqs, optval, sizeof(mreqs))) {
+		if (copy_from_sockptr(&mreqs, optval, sizeof(mreqs))) {
 			err = -EFAULT;
 			break;
 		}
@@ -1324,8 +1322,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 		err = -EPERM;
 		if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
 			break;
-		err = xfrm_user_policy(sk, optname, USER_SOCKPTR(optval),
-				       optlen);
+		err = xfrm_user_policy(sk, optname, optval, optlen);
 		break;
 
 	case IP_TRANSPARENT:
@@ -1412,7 +1409,8 @@ int ip_setsockopt(struct sock *sk, int level,
 	if (level != SOL_IP)
 		return -ENOPROTOOPT;
 
-	err = do_ip_setsockopt(sk, level, optname, optval, optlen);
+	err = do_ip_setsockopt(sk, level, optname, USER_SOCKPTR(optval),
+			       optlen);
 #if IS_ENABLED(CONFIG_BPFILTER_UMH)
 	if (optname >= BPFILTER_IPT_SO_SET_REPLACE &&
 	    optname < BPFILTER_IPT_SET_MAX)
-- 
2.27.0

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>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	Eric Dumazet <edumazet@google.com>
Cc: linux-s390@vger.kernel.org, rds-devel@oss.oracle.com,
	linux-decnet-user@lists.sourceforge.net,
	tipc-discussion@lists.sourceforge.net, linux-x25@vger.kernel.org,
	dccp@vger.kernel.org, netdev@vger.kernel.org,
	bridge@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	linux-can@vger.kernel.org, lvs-devel@vger.kernel.org,
	linux-bluetooth@vger.kernel.org, linux-sctp@vger.kernel.org,
	coreteam@netfilter.org, netfilter-devel@vger.kernel.org,
	linux-crypto@vger.kernel.org, linux-hams@vger.kernel.org,
	bpf@vger.kernel.org, linux-wpan@vger.kernel.org,
	linux-afs@lists.infradead.org, mptcp@lists.01.org
Subject: [Bridge] [PATCH 15/24] net/ipv4: switch do_ip_setsockopt to sockptr_t
Date: Mon, 20 Jul 2020 14:47:28 +0200	[thread overview]
Message-ID: <20200720124737.118617-16-hch@lst.de> (raw)
In-Reply-To: <20200720124737.118617-1-hch@lst.de>

Pass a sockptr_t to prepare for set_fs-less handling of the kernel
pointer from bpf-cgroup.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 net/ipv4/ip_sockglue.c | 68 ++++++++++++++++++++----------------------
 1 file changed, 33 insertions(+), 35 deletions(-)

diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index b12f39b52008a3..f7f1507b89fe24 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -683,15 +683,15 @@ static int set_mcast_msfilter(struct sock *sk, int ifindex,
 	return -EADDRNOTAVAIL;
 }
 
-static int copy_group_source_from_user(struct group_source_req *greqs,
-		void __user *optval, int optlen)
+static int copy_group_source_from_sockptr(struct group_source_req *greqs,
+		sockptr_t optval, int optlen)
 {
 	if (in_compat_syscall()) {
 		struct compat_group_source_req gr32;
 
 		if (optlen != sizeof(gr32))
 			return -EINVAL;
-		if (copy_from_user(&gr32, optval, sizeof(gr32)))
+		if (copy_from_sockptr(&gr32, optval, sizeof(gr32)))
 			return -EFAULT;
 		greqs->gsr_interface = gr32.gsr_interface;
 		greqs->gsr_group = gr32.gsr_group;
@@ -699,7 +699,7 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 	} else {
 		if (optlen != sizeof(*greqs))
 			return -EINVAL;
-		if (copy_from_user(greqs, optval, sizeof(*greqs)))
+		if (copy_from_sockptr(greqs, optval, sizeof(*greqs)))
 			return -EFAULT;
 	}
 
@@ -707,14 +707,14 @@ static int copy_group_source_from_user(struct group_source_req *greqs,
 }
 
 static int do_mcast_group_source(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct group_source_req greqs;
 	struct ip_mreq_source mreqs;
 	struct sockaddr_in *psin;
 	int omode, add, err;
 
-	err = copy_group_source_from_user(&greqs, optval, optlen);
+	err = copy_group_source_from_sockptr(&greqs, optval, optlen);
 	if (err)
 		return err;
 
@@ -754,8 +754,7 @@ static int do_mcast_group_source(struct sock *sk, int optname,
 	return ip_mc_source(add, omode, sk, &mreqs, greqs.gsr_interface);
 }
 
-static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
-		int optlen)
+static int ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval, int optlen)
 {
 	struct group_filter *gsf = NULL;
 	int err;
@@ -765,7 +764,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	if (optlen > sysctl_optmem_max)
 		return -ENOBUFS;
 
-	gsf = memdup_user(optval, optlen);
+	gsf = memdup_sockptr(optval, optlen);
 	if (IS_ERR(gsf))
 		return PTR_ERR(gsf);
 
@@ -786,7 +785,7 @@ static int ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	return err;
 }
 
-static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
+static int compat_ip_set_mcast_msfilter(struct sock *sk, sockptr_t optval,
 		int optlen)
 {
 	const int size0 = offsetof(struct compat_group_filter, gf_slist);
@@ -806,7 +805,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 	gf32 = p + 4; /* we want ->gf_group and ->gf_slist aligned */
 
 	err = -EFAULT;
-	if (copy_from_user(gf32, optval, optlen))
+	if (copy_from_sockptr(gf32, optval, optlen))
 		goto out_free_gsf;
 
 	/* numsrc >= (4G-140)/128 overflow in 32 bits */
@@ -831,7 +830,7 @@ static int compat_ip_set_mcast_msfilter(struct sock *sk, void __user *optval,
 }
 
 static int ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct ip_mreqn mreq = { };
 	struct sockaddr_in *psin;
@@ -839,7 +838,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -853,7 +852,7 @@ static int ip_mcast_join_leave(struct sock *sk, int optname,
 }
 
 static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
-		void __user *optval, int optlen)
+		sockptr_t optval, int optlen)
 {
 	struct compat_group_req greq;
 	struct ip_mreqn mreq = { };
@@ -861,7 +860,7 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 
 	if (optlen < sizeof(struct compat_group_req))
 		return -EINVAL;
-	if (copy_from_user(&greq, optval, sizeof(greq)))
+	if (copy_from_sockptr(&greq, optval, sizeof(greq)))
 		return -EFAULT;
 
 	psin = (struct sockaddr_in *)&greq.gr_group;
@@ -875,8 +874,8 @@ static int compat_ip_mcast_join_leave(struct sock *sk, int optname,
 	return ip_mc_leave_group(sk, &mreq);
 }
 
-static int do_ip_setsockopt(struct sock *sk, int level,
-			    int optname, char __user *optval, unsigned int optlen)
+static int do_ip_setsockopt(struct sock *sk, int level, int optname,
+		sockptr_t optval, unsigned int optlen)
 {
 	struct inet_sock *inet = inet_sk(sk);
 	struct net *net = sock_net(sk);
@@ -910,12 +909,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	case IP_RECVFRAGSIZE:
 	case IP_RECVERR_RFC4884:
 		if (optlen >= sizeof(int)) {
-			if (get_user(val, (int __user *) optval))
+			if (copy_from_sockptr(&val, optval, sizeof(val)))
 				return -EFAULT;
 		} else if (optlen >= sizeof(char)) {
 			unsigned char ucval;
 
-			if (get_user(ucval, (unsigned char __user *) optval))
+			if (copy_from_sockptr(&ucval, optval, sizeof(ucval)))
 				return -EFAULT;
 			val = (int) ucval;
 		}
@@ -926,8 +925,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 	if (optname == IP_ROUTER_ALERT)
 		return ip_ra_control(sk, val ? 1 : 0, NULL);
 	if (ip_mroute_opt(optname))
-		return ip_mroute_setsockopt(sk, optname, USER_SOCKPTR(optval),
-					    optlen);
+		return ip_mroute_setsockopt(sk, optname, optval, optlen);
 
 	err = 0;
 	if (needs_rtnl)
@@ -941,8 +939,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen > 40)
 			goto e_inval;
-		err = ip_options_get(sock_net(sk), &opt, USER_SOCKPTR(optval),
-					      optlen);
+		err = ip_options_get(sock_net(sk), &opt, optval, optlen);
 		if (err)
 			break;
 		old = rcu_dereference_protected(inet->inet_opt,
@@ -1140,17 +1137,17 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
 			if (optlen >= sizeof(struct ip_mreq)) {
-				if (copy_from_user(&mreq, optval,
-						   sizeof(struct ip_mreq)))
+				if (copy_from_sockptr(&mreq, optval,
+						      sizeof(struct ip_mreq)))
 					break;
 			} else if (optlen >= sizeof(struct in_addr)) {
-				if (copy_from_user(&mreq.imr_address, optval,
-						   sizeof(struct in_addr)))
+				if (copy_from_sockptr(&mreq.imr_address, optval,
+						      sizeof(struct in_addr)))
 					break;
 			}
 		}
@@ -1202,11 +1199,12 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			goto e_inval;
 		err = -EFAULT;
 		if (optlen >= sizeof(struct ip_mreqn)) {
-			if (copy_from_user(&mreq, optval, sizeof(mreq)))
+			if (copy_from_sockptr(&mreq, optval, sizeof(mreq)))
 				break;
 		} else {
 			memset(&mreq, 0, sizeof(mreq));
-			if (copy_from_user(&mreq, optval, sizeof(struct ip_mreq)))
+			if (copy_from_sockptr(&mreq, optval,
+					      sizeof(struct ip_mreq)))
 				break;
 		}
 
@@ -1226,7 +1224,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 			err = -ENOBUFS;
 			break;
 		}
-		msf = memdup_user(optval, optlen);
+		msf = memdup_sockptr(optval, optlen);
 		if (IS_ERR(msf)) {
 			err = PTR_ERR(msf);
 			break;
@@ -1257,7 +1255,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 
 		if (optlen != sizeof(struct ip_mreq_source))
 			goto e_inval;
-		if (copy_from_user(&mreqs, optval, sizeof(mreqs))) {
+		if (copy_from_sockptr(&mreqs, optval, sizeof(mreqs))) {
 			err = -EFAULT;
 			break;
 		}
@@ -1324,8 +1322,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
 		err = -EPERM;
 		if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
 			break;
-		err = xfrm_user_policy(sk, optname, USER_SOCKPTR(optval),
-				       optlen);
+		err = xfrm_user_policy(sk, optname, optval, optlen);
 		break;
 
 	case IP_TRANSPARENT:
@@ -1412,7 +1409,8 @@ int ip_setsockopt(struct sock *sk, int level,
 	if (level != SOL_IP)
 		return -ENOPROTOOPT;
 
-	err = do_ip_setsockopt(sk, level, optname, optval, optlen);
+	err = do_ip_setsockopt(sk, level, optname, USER_SOCKPTR(optval),
+			       optlen);
 #if IS_ENABLED(CONFIG_BPFILTER_UMH)
 	if (optname >= BPFILTER_IPT_SO_SET_REPLACE &&
 	    optname < BPFILTER_IPT_SET_MAX)
-- 
2.27.0


             reply	other threads:[~2020-07-20 12:47 UTC|newest]

Thread overview: 656+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-20 12:47 Christoph Hellwig [this message]
2020-07-20 12:47 ` [Bridge] [PATCH 15/24] net/ipv4: switch do_ip_setsockopt to sockptr_t Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2020-08-08 13:54 [MPTCP] Re: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt David Laight
2020-08-08 13:54 ` [Bridge] " David Laight
2020-08-08 13:54 ` David Laight
2020-08-08 13:54 ` David Laight
2020-08-08 13:54 ` David Laight
2020-08-08 13:54 ` David Laight
2020-08-08 13:54 ` David Laight
2020-08-07 18:29 [MPTCP] " Eric Dumazet
2020-08-07 18:29 ` [Bridge] " Eric Dumazet
2020-08-07 18:29 ` Eric Dumazet
2020-08-07 18:29 ` Eric Dumazet
2020-08-07 18:29 ` Eric Dumazet
2020-08-07 18:29 ` Eric Dumazet
2020-08-07 18:29 ` Eric Dumazet
2020-08-07  9:18 [MPTCP] " David Laight
2020-08-07  9:18 ` [Bridge] " David Laight
2020-08-07  9:18 ` David Laight
2020-08-07  9:18 ` David Laight
2020-08-07  9:18 ` David Laight
2020-08-07  9:18 ` David Laight
2020-08-07  9:18 ` David Laight
2020-08-07  7:21 [MPTCP] " Christoph Hellwig
2020-08-07  7:21 ` [Bridge] " Christoph Hellwig
2020-08-07  7:21 ` Christoph Hellwig
2020-08-07  7:21 ` Christoph Hellwig
2020-08-07  7:21 ` Christoph Hellwig
2020-08-07  7:21 ` Christoph Hellwig
2020-08-07  7:21 ` Christoph Hellwig
2020-08-06 22:21 [MPTCP] " Eric Dumazet
2020-08-06 22:21 ` [Bridge] " Eric Dumazet
2020-08-06 22:21 ` Eric Dumazet
2020-08-06 22:21 ` Eric Dumazet
2020-08-06 22:21 ` Eric Dumazet
2020-07-28  8:17 [MPTCP] Re: [PATCH 12/26] netfilter: switch nf_setsockopt to sockptr_t Jason A. Donenfeld
2020-07-28  8:17 ` [Bridge] " Jason A. Donenfeld
2020-07-28  8:17 ` Jason A. Donenfeld
2020-07-28  8:17 ` Jason A. Donenfeld
2020-07-28  8:17 ` Jason A. Donenfeld
2020-07-28  8:17 ` Jason A. Donenfeld
2020-07-28  8:17 ` Jason A. Donenfeld
2020-07-28  8:17 ` Jason A. Donenfeld
2020-07-28  8:17 ` Jason A. Donenfeld
2020-07-28  8:07 [MPTCP] " David Laight
2020-07-28  8:07 ` [Bridge] " David Laight
2020-07-28  8:07 ` David Laight
2020-07-28  8:07 ` David Laight
2020-07-28  8:07 ` David Laight
2020-07-28  8:07 ` David Laight
2020-07-27 18:22 [MPTCP] Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt " Ido Schimmel
2020-07-27 18:22 ` [Bridge] " Ido Schimmel
2020-07-27 18:22 ` Ido Schimmel
2020-07-27 18:22 ` Ido Schimmel
2020-07-27 18:22 ` Ido Schimmel
2020-07-27 18:22 ` Ido Schimmel
2020-07-27 16:23 [MPTCP] Re: [PATCH 12/26] netfilter: switch nf_setsockopt " Christoph Hellwig
2020-07-27 16:23 ` [Bridge] " Christoph Hellwig
2020-07-27 16:23 ` Christoph Hellwig
2020-07-27 16:23 ` Christoph Hellwig
2020-07-27 16:23 ` Christoph Hellwig
2020-07-27 16:23 ` Christoph Hellwig
2020-07-27 16:21 [MPTCP] " Jason A. Donenfeld
2020-07-27 16:21 ` [Bridge] " Jason A. Donenfeld
2020-07-27 16:21 ` Jason A. Donenfeld
2020-07-27 16:21 ` Jason A. Donenfeld
2020-07-27 16:21 ` Jason A. Donenfeld
2020-07-27 16:21 ` Jason A. Donenfeld
2020-07-27 16:16 [MPTCP] " Jason A. Donenfeld
2020-07-27 16:16 ` [Bridge] " Jason A. Donenfeld
2020-07-27 16:16 ` Jason A. Donenfeld
2020-07-27 16:16 ` Jason A. Donenfeld
2020-07-27 16:16 ` Jason A. Donenfeld
2020-07-27 16:16 ` Jason A. Donenfeld
2020-07-27 16:16 ` Jason A. Donenfeld
2020-07-27 16:16 [MPTCP] " Christoph Hellwig
2020-07-27 16:16 ` [Bridge] " Christoph Hellwig
2020-07-27 16:16 ` Christoph Hellwig
2020-07-27 16:16 ` Christoph Hellwig
2020-07-27 16:16 ` Christoph Hellwig
2020-07-27 16:16 ` Christoph Hellwig
2020-07-27 16:16 ` Christoph Hellwig
2020-07-27 16:15 [MPTCP] Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt " Christoph Hellwig
2020-07-27 16:15 ` [Bridge] " Christoph Hellwig
2020-07-27 16:15 ` Christoph Hellwig
2020-07-27 16:15 ` Christoph Hellwig
2020-07-27 16:15 ` Christoph Hellwig
2020-07-27 16:15 ` Christoph Hellwig
2020-07-27 16:15 ` Christoph Hellwig
2020-07-27 15:06 [MPTCP] Re: [PATCH 12/26] netfilter: switch nf_setsockopt " Christoph Hellwig
2020-07-27 15:06 ` [Bridge] " Christoph Hellwig
2020-07-27 15:06 ` Christoph Hellwig
2020-07-27 15:06 ` Christoph Hellwig
2020-07-27 15:06 ` Christoph Hellwig
2020-07-27 15:06 ` Christoph Hellwig
2020-07-27 15:06 ` Christoph Hellwig
2020-07-27 15:03 [MPTCP] " Jason A. Donenfeld
2020-07-27 15:03 ` [Bridge] " Jason A. Donenfeld
2020-07-27 15:03 ` Jason A. Donenfeld
2020-07-27 15:03 ` Jason A. Donenfeld
2020-07-27 15:03 ` Jason A. Donenfeld
2020-07-27 15:03 ` Jason A. Donenfeld
2020-07-27 14:09 [MPTCP] Re: get rid of the address_space override in setsockopt v2 David Laight
2020-07-27 14:09 ` [Bridge] " David Laight
2020-07-27 14:09 ` David Laight
2020-07-27 14:09 ` David Laight
2020-07-27 14:09 ` David Laight
2020-07-27 14:09 ` David Laight
2020-07-27 13:33 [MPTCP] Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t Ido Schimmel
2020-07-27 13:33 ` [Bridge] " Ido Schimmel
2020-07-27 13:33 ` Ido Schimmel
2020-07-27 13:33 ` Ido Schimmel
2020-07-27 13:33 ` Ido Schimmel
2020-07-27 13:33 ` Ido Schimmel
2020-07-27 13:24 [MPTCP] " David Laight
2020-07-27 13:24 ` [Bridge] " David Laight
2020-07-27 13:24 ` David Laight
2020-07-27 13:24 ` David Laight
2020-07-27 13:24 ` David Laight
2020-07-27 13:24 ` David Laight
2020-07-27 13:00 [MPTCP] " Christoph Hellwig
2020-07-27 13:00 ` [Bridge] " Christoph Hellwig
2020-07-27 13:00 ` Christoph Hellwig
2020-07-27 13:00 ` Christoph Hellwig
2020-07-27 13:00 ` Christoph Hellwig
2020-07-27 13:00 ` Christoph Hellwig
2020-07-27 13:00 ` Christoph Hellwig
2020-07-27 12:15 [MPTCP] " Ido Schimmel
2020-07-27 12:15 ` [Bridge] " Ido Schimmel
2020-07-27 12:15 ` Ido Schimmel
2020-07-27 12:15 ` Ido Schimmel
2020-07-27 12:15 ` Ido Schimmel
2020-07-27 12:15 ` Ido Schimmel
2020-07-26  7:46 [MPTCP] Re: get rid of the address_space override in setsockopt v2 David Miller
2020-07-26  7:46 ` [Bridge] " David Miller
2020-07-26  7:46 ` David Miller
2020-07-26  7:46 ` David Miller
2020-07-26  7:46 ` David Miller
2020-07-23 16:44 [MPTCP] Re: [PATCH 04/26] net: add a new sockptr_t type Christoph Hellwig
2020-07-23 16:44 ` [Bridge] " Christoph Hellwig
2020-07-23 16:44 ` Christoph Hellwig
2020-07-23 16:44 ` Christoph Hellwig
2020-07-23 16:44 ` Christoph Hellwig
2020-07-23 16:44 ` Christoph Hellwig
2020-07-23 16:44 ` Christoph Hellwig
2020-07-23 16:40 [MPTCP] " Eric Dumazet
2020-07-23 16:40 ` [Bridge] " Eric Dumazet
2020-07-23 16:40 ` Eric Dumazet
2020-07-23 16:40 ` Eric Dumazet
2020-07-23 16:40 ` Eric Dumazet
2020-07-23 16:40 ` Eric Dumazet
2020-07-23 16:40 ` Eric Dumazet
2020-07-23 14:56 [MPTCP] Re: [PATCH 03/26] bpfilter: reject kernel addresses David Laight
2020-07-23 14:56 ` [Bridge] " David Laight
2020-07-23 14:56 ` David Laight
2020-07-23 14:56 ` David Laight
2020-07-23 14:56 ` David Laight
2020-07-23 14:56 ` David Laight
2020-07-23 14:44 [MPTCP] " 'Christoph Hellwig'
2020-07-23 14:44 ` [Bridge] " 'Christoph Hellwig'
2020-07-23 14:44 ` 'Christoph Hellwig'
2020-07-23 14:44 ` 'Christoph Hellwig'
2020-07-23 14:44 ` 'Christoph Hellwig'
2020-07-23 14:44 ` 'Christoph Hellwig'
2020-07-23 14:44 ` 'Christoph Hellwig'
2020-07-23 14:42 [MPTCP] " David Laight
2020-07-23 14:42 ` [Bridge] " David Laight
2020-07-23 14:42 ` David Laight
2020-07-23 14:42 ` David Laight
2020-07-23 14:42 ` David Laight
2020-07-23 14:42 ` David Laight
2020-07-23 11:44 [MPTCP] Re: [PATCH 13/26] bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t 'Christoph Hellwig'
2020-07-23 11:44 ` [Bridge] " 'Christoph Hellwig'
2020-07-23 11:44 ` 'Christoph Hellwig'
2020-07-23 11:44 ` 'Christoph Hellwig'
2020-07-23 11:44 ` 'Christoph Hellwig'
2020-07-23 11:44 ` 'Christoph Hellwig'
2020-07-23 11:44 ` 'Christoph Hellwig'
2020-07-23 11:16 [MPTCP] " David Laight
2020-07-23 11:16 ` [Bridge] " David Laight
2020-07-23 11:16 ` David Laight
2020-07-23 11:16 ` David Laight
2020-07-23 11:16 ` David Laight
2020-07-23 11:16 ` David Laight
2020-07-23 11:14 [MPTCP] Re: [PATCH 01/26] bpfilter: fix up a sparse annotation Luc Van Oostenryck
2020-07-23 11:14 ` [Bridge] " Luc Van Oostenryck
2020-07-23 11:14 ` Luc Van Oostenryck
2020-07-23 11:14 ` Luc Van Oostenryck
2020-07-23 11:14 ` Luc Van Oostenryck
2020-07-23 11:14 ` Luc Van Oostenryck
2020-07-23  8:39 [MPTCP] Re: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt Matthieu Baerts
2020-07-23  8:39 ` [Bridge] [MPTCP] " Matthieu Baerts
2020-07-23  8:39 ` Matthieu Baerts
2020-07-23  8:39 ` Matthieu Baerts
2020-07-23  8:39 ` Matthieu Baerts
2020-07-23  8:39 [MPTCP] Re: [PATCH 08/26] net: switch sock_set_timeout to sockptr_t Matthieu Baerts
2020-07-23  8:39 ` [Bridge] [MPTCP] " Matthieu Baerts
2020-07-23  8:39 ` Matthieu Baerts
2020-07-23  8:39 ` Matthieu Baerts
2020-07-23  8:39 ` Matthieu Baerts
2020-07-23  6:09 [MPTCP] [PATCH 26/26] net: optimize the sockptr_t for unified kernel/user address spaces Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 25/26] net: pass a sockptr_t into ->setsockopt Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 24/26] net/tcp: switch do_tcp_setsockopt to sockptr_t Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 23/26] net/tcp: switch ->md5_parse " Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 22/26] net/udp: switch udp_lib_setsockopt " Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 21/26] net/ipv6: switch do_ipv6_setsockopt " Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 20/26] net/ipv6: factor out a ipv6_set_opt_hdr helper Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 [MPTCP] [PATCH 18/26] net/ipv6: split up ipv6_flowlabel_opt Christoph Hellwig
2020-07-23  6:09 ` [Bridge] " Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:09 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 17/26] net/ipv6: switch ip6_mroute_setsockopt to sockptr_t Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 16/26] net/ipv4: switch do_ip_setsockopt " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 15/26] net/ipv4: merge ip_options_get and ip_options_get_from_user Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 14/26] net/ipv4: switch ip_mroute_setsockopt to sockptr_t Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 13/26] bpfilter: switch bpfilter_ip_set_sockopt " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 12/26] netfilter: switch nf_setsockopt " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 11/26] netfilter: switch xt_copy_counters " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 10/26] netfilter: remove the unused user argument to do_update_counters Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 09/26] net/xfrm: switch xfrm_user_policy to sockptr_t Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 08/26] net: switch sock_set_timeout " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 07/26] " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 06/26] net: switch sock_setbindtodevice " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 05/26] net: switch copy_bpf_fprog_from_user " Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 03/26] bpfilter: reject kernel addresses Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 02/26] net/bpfilter: split __bpfilter_process_sockopt Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] [PATCH 01/26] bpfilter: fix up a sparse annotation Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 [MPTCP] get rid of the address_space override in setsockopt v2 Christoph Hellwig
2020-07-23  6:08 ` [Bridge] " Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` Christoph Hellwig
2020-07-23  6:08 ` [MPTCP] [PATCH 04/26] net: add a new sockptr_t type Christoph Hellwig
2020-07-23  6:08   ` [Bridge] " Christoph Hellwig
2020-07-23  6:08   ` Christoph Hellwig
2020-07-23  6:08   ` Christoph Hellwig
2020-07-23  6:08   ` Christoph Hellwig
2020-07-23 15:40   ` Jan Engelhardt
2020-07-23 15:40     ` [Bridge] " Jan Engelhardt
2020-07-23 15:40     ` Jan Engelhardt
2020-07-23 15:40     ` Jan Engelhardt
2020-07-23 15:40     ` Jan Engelhardt
2020-07-23 15:40     ` Jan Engelhardt
2020-07-24 22:43 ` [MPTCP] Re: get rid of the address_space override in setsockopt v2 David Miller
2020-07-24 22:43   ` [Bridge] " David Miller
2020-07-24 22:43   ` David Miller
2020-07-24 22:43   ` David Miller
2020-07-24 22:43   ` David Miller
2020-07-26  7:03   ` [MPTCP] " Christoph Hellwig
2020-07-26  7:03     ` [Bridge] " Christoph Hellwig
2020-07-26  7:03     ` Christoph Hellwig
2020-07-26  7:03     ` Christoph Hellwig
2020-07-26  7:03     ` Christoph Hellwig
2020-07-26  7:08     ` Andreas Schwab
2020-07-26  7:18       ` [Bridge] " Andreas Schwab
2020-07-26  7:08       ` Andreas Schwab
2020-07-26  7:08       ` Andreas Schwab
2020-07-27  9:51   ` [MPTCP] " David Laight
2020-07-27  9:51     ` [Bridge] " David Laight
2020-07-27  9:51     ` David Laight
2020-07-27  9:51     ` David Laight
2020-07-27  9:51     ` David Laight
2020-07-27  9:51     ` David Laight
2020-07-27 13:48     ` Al Viro
2020-07-27 13:48       ` [Bridge] " Al Viro
2020-07-27 13:48       ` Al Viro
2020-07-27 13:48       ` Al Viro
2020-07-27 13:48       ` Al Viro
2020-07-27 13:48       ` Al Viro
2020-07-22 17:09 [MPTCP] Re: get rid of the address_space override in setsockopt Alexei Starovoitov
2020-07-22 17:09 ` [Bridge] " Alexei Starovoitov
2020-07-22 17:09 ` Alexei Starovoitov
2020-07-22 17:09 ` Alexei Starovoitov
2020-07-22 17:09 ` Alexei Starovoitov
2020-07-22 17:09 ` Alexei Starovoitov
2020-07-22  8:26 [MPTCP] Re: [PATCH 24/24] net: pass a sockptr_t into ->setsockopt Matthieu Baerts
2020-07-22  8:26 ` [Bridge] [MPTCP] " Matthieu Baerts
2020-07-22  8:26 ` Matthieu Baerts
2020-07-22  8:26 ` Matthieu Baerts
2020-07-22  8:26 ` Matthieu Baerts
2020-07-22  8:26 ` Matthieu Baerts
2020-07-22  8:21 [MPTCP] Re: get rid of the address_space override in setsockopt David Laight
2020-07-22  8:21 ` [Bridge] " David Laight
2020-07-22  8:21 ` David Laight
2020-07-22  8:21 ` David Laight
2020-07-22  8:21 ` David Laight
2020-07-22  8:21 ` David Laight
2020-07-22  8:07 [MPTCP] " 'Christoph Hellwig'
2020-07-22  8:07 ` [Bridge] " 'Christoph Hellwig'
2020-07-22  8:07 ` 'Christoph Hellwig'
2020-07-22  8:07 ` 'Christoph Hellwig'
2020-07-22  8:07 ` 'Christoph Hellwig'
2020-07-22  8:07 ` 'Christoph Hellwig'
2020-07-22  8:07 ` 'Christoph Hellwig'
2020-07-22  8:06 [MPTCP] " 'Christoph Hellwig'
2020-07-22  8:06 ` [Bridge] " 'Christoph Hellwig'
2020-07-22  8:06 ` 'Christoph Hellwig'
2020-07-22  8:06 ` 'Christoph Hellwig'
2020-07-22  8:06 ` 'Christoph Hellwig'
2020-07-22  8:06 ` 'Christoph Hellwig'
2020-07-22  8:06 ` 'Christoph Hellwig'
2020-07-22  8:01 [MPTCP] Re: [PATCH 12/24] bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t 'Christoph Hellwig'
2020-07-22  8:01 ` [Bridge] " 'Christoph Hellwig'
2020-07-22  8:01 ` 'Christoph Hellwig'
2020-07-22  8:01 ` 'Christoph Hellwig'
2020-07-22  8:01 ` 'Christoph Hellwig'
2020-07-22  8:01 ` 'Christoph Hellwig'
2020-07-22  8:01 ` 'Christoph Hellwig'
2020-07-22  8:00 [MPTCP] " 'Christoph Hellwig'
2020-07-22  8:00 ` [Bridge] " 'Christoph Hellwig'
2020-07-22  8:00 ` 'Christoph Hellwig'
2020-07-22  8:00 ` 'Christoph Hellwig'
2020-07-22  8:00 ` 'Christoph Hellwig'
2020-07-22  8:00 ` 'Christoph Hellwig'
2020-07-22  8:00 ` 'Christoph Hellwig'
2020-07-22  7:56 [MPTCP] Re: get rid of the address_space override in setsockopt Christoph Hellwig
2020-07-22  7:56 ` [Bridge] " Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Christoph Hellwig
2020-07-22  7:56 ` [Bridge] " Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-22  7:56 ` Christoph Hellwig
2020-07-21 10:26 [MPTCP] Re: get rid of the address_space override in setsockopt David Laight
2020-07-21 10:26 ` [Bridge] " David Laight
2020-07-21 10:26 ` David Laight
2020-07-21 10:26 ` David Laight
2020-07-21 10:26 ` David Laight
2020-07-21 10:26 ` David Laight
2020-07-21 10:14 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type David Laight
2020-07-21 10:14 ` [Bridge] " David Laight
2020-07-21 10:14 ` David Laight
2020-07-21 10:14 ` David Laight
2020-07-21 10:14 ` David Laight
2020-07-21 10:14 ` David Laight
2020-07-21  9:55 [MPTCP] " David Laight
2020-07-21  9:55 ` [Bridge] " David Laight
2020-07-21  9:55 ` David Laight
2020-07-21  9:55 ` David Laight
2020-07-21  9:55 ` David Laight
2020-07-21  9:55 ` David Laight
2020-07-21  9:38 [MPTCP] Re: get rid of the address_space override in setsockopt David Laight
2020-07-21  9:38 ` [Bridge] " David Laight
2020-07-21  9:38 ` David Laight
2020-07-21  9:38 ` David Laight
2020-07-21  9:38 ` David Laight
2020-07-21  9:38 ` David Laight
2020-07-21  8:36 [MPTCP] Re: [PATCH 12/24] bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t David Laight
2020-07-21  8:36 ` [Bridge] " David Laight
2020-07-21  8:36 ` David Laight
2020-07-21  8:36 ` David Laight
2020-07-21  8:36 ` David Laight
2020-07-21  8:36 ` David Laight
2020-07-21  5:28 [MPTCP] Re: [PATCH 02/24] bpfilter: fix up a sparse annotation Al Viro
2020-07-21  5:28 ` [Bridge] " Al Viro
2020-07-21  5:28 ` Al Viro
2020-07-21  5:28 ` Al Viro
2020-07-21  5:28 ` Al Viro
2020-07-21  5:28 ` Al Viro
2020-07-21  5:23 [MPTCP] " Christoph Hellwig
2020-07-21  5:23 ` [Bridge] " Christoph Hellwig
2020-07-21  5:23 ` Christoph Hellwig
2020-07-21  5:23 ` Christoph Hellwig
2020-07-21  5:23 ` Christoph Hellwig
2020-07-21  5:23 ` Christoph Hellwig
2020-07-21  5:23 ` Christoph Hellwig
2020-07-21  2:40 [MPTCP] " Luc Van Oostenryck
2020-07-21  2:40 ` [Bridge] " Luc Van Oostenryck
2020-07-21  2:40 ` Luc Van Oostenryck
2020-07-21  2:40 ` Luc Van Oostenryck
2020-07-21  2:40 ` Luc Van Oostenryck
2020-07-21  2:40 ` Luc Van Oostenryck
2020-07-20 23:20 [MPTCP] Re: [PATCH 24/24] net: pass a sockptr_t into ->setsockopt David Miller
2020-07-20 23:20 ` [Bridge] " David Miller
2020-07-20 23:20 ` David Miller
2020-07-20 23:20 ` David Miller
2020-07-20 23:20 ` David Miller
2020-07-20 23:20 ` David Miller
2020-07-20 20:47 [MPTCP] Re: get rid of the address_space override in setsockopt Alexei Starovoitov
2020-07-20 20:47 ` [Bridge] " Alexei Starovoitov
2020-07-20 20:47 ` Alexei Starovoitov
2020-07-20 20:47 ` Alexei Starovoitov
2020-07-20 20:47 ` Alexei Starovoitov
2020-07-20 20:47 ` Alexei Starovoitov
2020-07-20 17:55 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Eric Biggers
2020-07-20 17:55 ` [Bridge] " Eric Biggers
2020-07-20 17:55 ` Eric Biggers
2020-07-20 17:55 ` Eric Biggers
2020-07-20 17:55 ` Eric Biggers
2020-07-20 17:55 ` Eric Biggers
2020-07-20 17:43 [MPTCP] Re: get rid of the address_space override in setsockopt Christoph Hellwig
2020-07-20 17:43 ` [Bridge] " Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Christoph Hellwig
2020-07-20 17:43 ` [Bridge] " Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 17:43 ` Christoph Hellwig
2020-07-20 16:38 [MPTCP] Re: get rid of the address_space override in setsockopt Eric Biggers
2020-07-20 16:38 ` [Bridge] " Eric Biggers
2020-07-20 16:38 ` Eric Biggers
2020-07-20 16:38 ` Eric Biggers
2020-07-20 16:38 ` Eric Biggers
2020-07-20 16:38 ` Eric Biggers
2020-07-20 16:37 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Eric Biggers
2020-07-20 16:37 ` [Bridge] " Eric Biggers
2020-07-20 16:37 ` Eric Biggers
2020-07-20 16:37 ` Eric Biggers
2020-07-20 16:37 ` Eric Biggers
2020-07-20 16:37 ` Eric Biggers
2020-07-20 14:19 [MPTCP] Re: [PATCH 24/24] net: pass a sockptr_t into ->setsockopt Stefan Schmidt
2020-07-20 14:19 ` [Bridge] " Stefan Schmidt
2020-07-20 14:19 ` Stefan Schmidt
2020-07-20 14:19 ` Stefan Schmidt
2020-07-20 14:19 ` Stefan Schmidt
2020-07-20 12:47 [MPTCP] " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 23/24] net/tcp: switch do_tcp_setsockopt to sockptr_t Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 22/24] net/tcp: switch ->md5_parse " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 21/24] net/udp: switch udp_lib_setsockopt " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 20/24] net/ipv6: switch do_ipv6_setsockopt " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 19/24] net/ipv6: factor out a ipv6_set_opt_hdr helper Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 18/24] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 17/24] net/ipv6: split up ipv6_flowlabel_opt Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 16/24] net/ipv6: switch ip6_mroute_setsockopt to sockptr_t Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 14/24] net/ipv4: merge ip_options_get and ip_options_get_from_user Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 13/24] net/ipv4: switch ip_mroute_setsockopt to sockptr_t Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 12/24] bpfilter: switch bpfilter_ip_set_sockopt " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 11/24] netfilter: switch nf_setsockopt " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 10/24] netfilter: switch xt_copy_counters " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 09/24] netfilter: remove the unused user argument to do_update_counters Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 08/24] net/xfrm: switch xfrm_user_policy to sockptr_t Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 07/24] net: switch sock_set_timeout " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 06/24] " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 05/24] net: switch sock_setbindtodevice " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 04/24] net: switch copy_bpf_fprog_from_user " Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 03/24] net: add a new sockptr_t type Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 02/24] bpfilter: fix up a sparse annotation Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] [PATCH 01/24] bpfilter: reject kernel addresses Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 [MPTCP] get rid of the address_space override in setsockopt Christoph Hellwig
2020-07-20 12:47 ` [Bridge] " Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` Christoph Hellwig
2020-07-20 12:47 ` 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=20200720124737.118617-16-hch@lst.de \
    --to=unknown@example.com \
    /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.