From: Christoph Hellwig <hch at lst.de> To: mptcp at lists.01.org Subject: [MPTCP] [PATCH 16/26] net/ipv4: switch do_ip_setsockopt to sockptr_t Date: Thu, 23 Jul 2020 08:08:58 +0200 [thread overview] Message-ID: <20200723060908.50081-17-hch@lst.de> (raw) In-Reply-To: 20200723060908.50081-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
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 16/26] net/ipv4: switch do_ip_setsockopt to sockptr_t Date: Thu, 23 Jul 2020 08:08:58 +0200 [thread overview] Message-ID: <20200723060908.50081-17-hch@lst.de> (raw) In-Reply-To: <20200723060908.50081-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
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 16/26] net/ipv4: switch do_ip_setsockopt to sockptr_t Date: Thu, 23 Jul 2020 06:08:58 +0000 [thread overview] Message-ID: <20200723060908.50081-17-hch@lst.de> (raw) In-Reply-To: <20200723060908.50081-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
next reply other threads:[~2020-07-23 6:08 UTC|newest] Thread overview: 417+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-23 6:08 Christoph Hellwig [this message] 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` '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 ` 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 ` '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 ` 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 ` 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 ` [MPTCP] " 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 ` [MPTCP] " 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 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 ` David Miller 2020-07-24 22:43 ` David Miller 2020-07-26 7:03 ` [MPTCP] " 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:08 ` Andreas Schwab 2020-07-27 9:51 ` [MPTCP] " 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 ` 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 ` 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 ` [MPTCP] " 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 ` 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 ` '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 ` '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 ` '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 ` '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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` Stefan Schmidt 2020-07-20 14:19 ` Stefan Schmidt 2020-07-20 12:47 [MPTCP] " 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 15/24] net/ipv4: switch do_ip_setsockopt " 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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=20200723060908.50081-17-hch@lst.de \ --to=unknown@example.com \ --subject='Re: [MPTCP] [PATCH 16/26] net/ipv4: switch do_ip_setsockopt to sockptr_t' \ /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
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.