All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ido Schimmel <idosch at idosch.org>
To: mptcp at lists.01.org
Subject: [MPTCP] Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t
Date: Mon, 27 Jul 2020 15:15:05 +0300	[thread overview]
Message-ID: <20200727121505.GA1804864@shredder> (raw)
In-Reply-To: 20200723060908.50081-20-hch@lst.de

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

On Thu, Jul 23, 2020 at 08:09:01AM +0200, Christoph Hellwig wrote:
> Pass a sockptr_t to prepare for set_fs-less handling of the kernel
> pointer from bpf-cgroup.
> 
> Note that the get case is pretty weird in that it actually copies data
> back to userspace from setsockopt.
> 
> Signed-off-by: Christoph Hellwig <hch(a)lst.de>
> ---
>  include/net/ipv6.h       |  2 +-
>  net/ipv6/ip6_flowlabel.c | 16 +++++++++-------
>  net/ipv6/ipv6_sockglue.c |  2 +-
>  3 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/include/net/ipv6.h b/include/net/ipv6.h
> index 262fc88dbd7e2f..4c9d89b5d73268 100644
> --- a/include/net/ipv6.h
> +++ b/include/net/ipv6.h
> @@ -406,7 +406,7 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space,
>  					 struct ip6_flowlabel *fl,
>  					 struct ipv6_txoptions *fopt);
>  void fl6_free_socklist(struct sock *sk);
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen);
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen);
>  int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  			   int flags);
>  int ip6_flowlabel_init(void);
> diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
> index 27ee6de9beffc4..6b3c315f3d461a 100644
> --- a/net/ipv6/ip6_flowlabel.c
> +++ b/net/ipv6/ip6_flowlabel.c
> @@ -371,7 +371,7 @@ static int fl6_renew(struct ip6_flowlabel *fl, unsigned long linger, unsigned lo
>  
>  static struct ip6_flowlabel *
>  fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
> -	  char __user *optval, int optlen, int *err_p)
> +	  sockptr_t optval, int optlen, int *err_p)
>  {
>  	struct ip6_flowlabel *fl = NULL;
>  	int olen;
> @@ -401,7 +401,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
>  		memset(fl->opt, 0, sizeof(*fl->opt));
>  		fl->opt->tot_len = sizeof(*fl->opt) + olen;
>  		err = -EFAULT;
> -		if (copy_from_user(fl->opt+1, optval+CMSG_ALIGN(sizeof(*freq)), olen))
> +		sockptr_advance(optval, CMSG_ALIGN(sizeof(*freq)));
> +		if (copy_from_sockptr(fl->opt + 1, optval, olen))
>  			goto done;
>  
>  		msg.msg_controllen = olen;
> @@ -604,7 +605,7 @@ static int ipv6_flowlabel_renew(struct sock *sk, struct in6_flowlabel_req *freq)
>  }
>  
>  static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
> -		void __user *optval, int optlen)
> +		sockptr_t optval, int optlen)
>  {
>  	struct ipv6_fl_socklist *sfl, *sfl1 = NULL;
>  	struct ip6_flowlabel *fl, *fl1 = NULL;
> @@ -702,8 +703,9 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  		goto recheck;
>  
>  	if (!freq->flr_label) {
> -		if (copy_to_user(&((struct in6_flowlabel_req __user *) optval)->flr_label,
> -				 &fl->label, sizeof(fl->label))) {
> +		sockptr_advance(optval,
> +				offsetof(struct in6_flowlabel_req, flr_label));

Christoph,

I see a regression with IPv6 flowlabel that I bisected to this patch.
When passing '-F 0' to 'ping' the flow label should be random, yet it's
the same every time after this patch.

It seems that the pointer is never advanced after the call to
sockptr_advance() because it is passed by value and not by reference.
Even if you were to pass it by reference I think you would later need to
call sockptr_decrease() or something similar. Otherwise it is very
error-prone.

Maybe adding an offset to copy_to_sockptr() and copy_from_sockptr() is
better?

Thanks

> +		if (copy_to_sockptr(optval, &fl->label, sizeof(fl->label))) {
>  			/* Intentionally ignore fault. */
>  		}
>  	}
> @@ -716,13 +718,13 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  	return err;
>  }
>  
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen)
>  {
>  	struct in6_flowlabel_req freq;
>  
>  	if (optlen < sizeof(freq))
>  		return -EINVAL;
> -	if (copy_from_user(&freq, optval, sizeof(freq)))
> +	if (copy_from_sockptr(&freq, optval, sizeof(freq)))
>  		return -EFAULT;
>  
>  	switch (freq.flr_action) {
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 119dfaf5f4bb26..3897fb55372d38 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -929,7 +929,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>  		retv = 0;
>  		break;
>  	case IPV6_FLOWLABEL_MGR:
> -		retv = ipv6_flowlabel_opt(sk, optval, optlen);
> +		retv = ipv6_flowlabel_opt(sk, USER_SOCKPTR(optval), optlen);
>  		break;
>  	case IPV6_IPSEC_POLICY:
>  	case IPV6_XFRM_POLICY:
> -- 
> 2.27.0
> 

WARNING: multiple messages have this Message-ID (diff)
From: Ido Schimmel <idosch@idosch.org>
To: Christoph Hellwig <hch@lst.de>
Cc: "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>,
	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: Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t
Date: Mon, 27 Jul 2020 15:15:05 +0300	[thread overview]
Message-ID: <20200727121505.GA1804864@shredder> (raw)
In-Reply-To: <20200723060908.50081-20-hch@lst.de>

On Thu, Jul 23, 2020 at 08:09:01AM +0200, Christoph Hellwig wrote:
> Pass a sockptr_t to prepare for set_fs-less handling of the kernel
> pointer from bpf-cgroup.
> 
> Note that the get case is pretty weird in that it actually copies data
> back to userspace from setsockopt.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  include/net/ipv6.h       |  2 +-
>  net/ipv6/ip6_flowlabel.c | 16 +++++++++-------
>  net/ipv6/ipv6_sockglue.c |  2 +-
>  3 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/include/net/ipv6.h b/include/net/ipv6.h
> index 262fc88dbd7e2f..4c9d89b5d73268 100644
> --- a/include/net/ipv6.h
> +++ b/include/net/ipv6.h
> @@ -406,7 +406,7 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space,
>  					 struct ip6_flowlabel *fl,
>  					 struct ipv6_txoptions *fopt);
>  void fl6_free_socklist(struct sock *sk);
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen);
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen);
>  int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  			   int flags);
>  int ip6_flowlabel_init(void);
> diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
> index 27ee6de9beffc4..6b3c315f3d461a 100644
> --- a/net/ipv6/ip6_flowlabel.c
> +++ b/net/ipv6/ip6_flowlabel.c
> @@ -371,7 +371,7 @@ static int fl6_renew(struct ip6_flowlabel *fl, unsigned long linger, unsigned lo
>  
>  static struct ip6_flowlabel *
>  fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
> -	  char __user *optval, int optlen, int *err_p)
> +	  sockptr_t optval, int optlen, int *err_p)
>  {
>  	struct ip6_flowlabel *fl = NULL;
>  	int olen;
> @@ -401,7 +401,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
>  		memset(fl->opt, 0, sizeof(*fl->opt));
>  		fl->opt->tot_len = sizeof(*fl->opt) + olen;
>  		err = -EFAULT;
> -		if (copy_from_user(fl->opt+1, optval+CMSG_ALIGN(sizeof(*freq)), olen))
> +		sockptr_advance(optval, CMSG_ALIGN(sizeof(*freq)));
> +		if (copy_from_sockptr(fl->opt + 1, optval, olen))
>  			goto done;
>  
>  		msg.msg_controllen = olen;
> @@ -604,7 +605,7 @@ static int ipv6_flowlabel_renew(struct sock *sk, struct in6_flowlabel_req *freq)
>  }
>  
>  static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
> -		void __user *optval, int optlen)
> +		sockptr_t optval, int optlen)
>  {
>  	struct ipv6_fl_socklist *sfl, *sfl1 = NULL;
>  	struct ip6_flowlabel *fl, *fl1 = NULL;
> @@ -702,8 +703,9 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  		goto recheck;
>  
>  	if (!freq->flr_label) {
> -		if (copy_to_user(&((struct in6_flowlabel_req __user *) optval)->flr_label,
> -				 &fl->label, sizeof(fl->label))) {
> +		sockptr_advance(optval,
> +				offsetof(struct in6_flowlabel_req, flr_label));

Christoph,

I see a regression with IPv6 flowlabel that I bisected to this patch.
When passing '-F 0' to 'ping' the flow label should be random, yet it's
the same every time after this patch.

It seems that the pointer is never advanced after the call to
sockptr_advance() because it is passed by value and not by reference.
Even if you were to pass it by reference I think you would later need to
call sockptr_decrease() or something similar. Otherwise it is very
error-prone.

Maybe adding an offset to copy_to_sockptr() and copy_from_sockptr() is
better?

Thanks

> +		if (copy_to_sockptr(optval, &fl->label, sizeof(fl->label))) {
>  			/* Intentionally ignore fault. */
>  		}
>  	}
> @@ -716,13 +718,13 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  	return err;
>  }
>  
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen)
>  {
>  	struct in6_flowlabel_req freq;
>  
>  	if (optlen < sizeof(freq))
>  		return -EINVAL;
> -	if (copy_from_user(&freq, optval, sizeof(freq)))
> +	if (copy_from_sockptr(&freq, optval, sizeof(freq)))
>  		return -EFAULT;
>  
>  	switch (freq.flr_action) {
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 119dfaf5f4bb26..3897fb55372d38 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -929,7 +929,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>  		retv = 0;
>  		break;
>  	case IPV6_FLOWLABEL_MGR:
> -		retv = ipv6_flowlabel_opt(sk, optval, optlen);
> +		retv = ipv6_flowlabel_opt(sk, USER_SOCKPTR(optval), optlen);
>  		break;
>  	case IPV6_IPSEC_POLICY:
>  	case IPV6_XFRM_POLICY:
> -- 
> 2.27.0
> 

WARNING: multiple messages have this Message-ID (diff)
From: Ido Schimmel <idosch@idosch.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Alexei Starovoitov <ast@kernel.org>,
	linux-sctp@vger.kernel.org, linux-afs@lists.infradead.org,
	linux-s390@vger.kernel.org, rds-devel@oss.oracle.com,
	Daniel Borkmann <daniel@iogearbox.net>,
	dccp@vger.kernel.org, bridge@lists.linux-foundation.org,
	lvs-devel@vger.kernel.org, coreteam@netfilter.org,
	mptcp@lists.01.org, Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	linux-can@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
	linux-hams@vger.kernel.org,
	tipc-discussion@lists.sourceforge.net, linux-x25@vger.kernel.org,
	Eric Dumazet <edumazet@google.com>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	netdev@vger.kernel.org, linux-decnet-user@lists.sourceforge.net,
	linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	netfilter-devel@vger.kernel.org, linux-crypto@vger.kernel.org,
	bpf@vger.kernel.org, linux-wpan@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t
Date: Mon, 27 Jul 2020 15:15:05 +0300	[thread overview]
Message-ID: <20200727121505.GA1804864@shredder> (raw)
In-Reply-To: <20200723060908.50081-20-hch@lst.de>

On Thu, Jul 23, 2020 at 08:09:01AM +0200, Christoph Hellwig wrote:
> Pass a sockptr_t to prepare for set_fs-less handling of the kernel
> pointer from bpf-cgroup.
> 
> Note that the get case is pretty weird in that it actually copies data
> back to userspace from setsockopt.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  include/net/ipv6.h       |  2 +-
>  net/ipv6/ip6_flowlabel.c | 16 +++++++++-------
>  net/ipv6/ipv6_sockglue.c |  2 +-
>  3 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/include/net/ipv6.h b/include/net/ipv6.h
> index 262fc88dbd7e2f..4c9d89b5d73268 100644
> --- a/include/net/ipv6.h
> +++ b/include/net/ipv6.h
> @@ -406,7 +406,7 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space,
>  					 struct ip6_flowlabel *fl,
>  					 struct ipv6_txoptions *fopt);
>  void fl6_free_socklist(struct sock *sk);
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen);
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen);
>  int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  			   int flags);
>  int ip6_flowlabel_init(void);
> diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
> index 27ee6de9beffc4..6b3c315f3d461a 100644
> --- a/net/ipv6/ip6_flowlabel.c
> +++ b/net/ipv6/ip6_flowlabel.c
> @@ -371,7 +371,7 @@ static int fl6_renew(struct ip6_flowlabel *fl, unsigned long linger, unsigned lo
>  
>  static struct ip6_flowlabel *
>  fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
> -	  char __user *optval, int optlen, int *err_p)
> +	  sockptr_t optval, int optlen, int *err_p)
>  {
>  	struct ip6_flowlabel *fl = NULL;
>  	int olen;
> @@ -401,7 +401,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
>  		memset(fl->opt, 0, sizeof(*fl->opt));
>  		fl->opt->tot_len = sizeof(*fl->opt) + olen;
>  		err = -EFAULT;
> -		if (copy_from_user(fl->opt+1, optval+CMSG_ALIGN(sizeof(*freq)), olen))
> +		sockptr_advance(optval, CMSG_ALIGN(sizeof(*freq)));
> +		if (copy_from_sockptr(fl->opt + 1, optval, olen))
>  			goto done;
>  
>  		msg.msg_controllen = olen;
> @@ -604,7 +605,7 @@ static int ipv6_flowlabel_renew(struct sock *sk, struct in6_flowlabel_req *freq)
>  }
>  
>  static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
> -		void __user *optval, int optlen)
> +		sockptr_t optval, int optlen)
>  {
>  	struct ipv6_fl_socklist *sfl, *sfl1 = NULL;
>  	struct ip6_flowlabel *fl, *fl1 = NULL;
> @@ -702,8 +703,9 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  		goto recheck;
>  
>  	if (!freq->flr_label) {
> -		if (copy_to_user(&((struct in6_flowlabel_req __user *) optval)->flr_label,
> -				 &fl->label, sizeof(fl->label))) {
> +		sockptr_advance(optval,
> +				offsetof(struct in6_flowlabel_req, flr_label));

Christoph,

I see a regression with IPv6 flowlabel that I bisected to this patch.
When passing '-F 0' to 'ping' the flow label should be random, yet it's
the same every time after this patch.

It seems that the pointer is never advanced after the call to
sockptr_advance() because it is passed by value and not by reference.
Even if you were to pass it by reference I think you would later need to
call sockptr_decrease() or something similar. Otherwise it is very
error-prone.

Maybe adding an offset to copy_to_sockptr() and copy_from_sockptr() is
better?

Thanks

> +		if (copy_to_sockptr(optval, &fl->label, sizeof(fl->label))) {
>  			/* Intentionally ignore fault. */
>  		}
>  	}
> @@ -716,13 +718,13 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  	return err;
>  }
>  
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen)
>  {
>  	struct in6_flowlabel_req freq;
>  
>  	if (optlen < sizeof(freq))
>  		return -EINVAL;
> -	if (copy_from_user(&freq, optval, sizeof(freq)))
> +	if (copy_from_sockptr(&freq, optval, sizeof(freq)))
>  		return -EFAULT;
>  
>  	switch (freq.flr_action) {
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 119dfaf5f4bb26..3897fb55372d38 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -929,7 +929,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>  		retv = 0;
>  		break;
>  	case IPV6_FLOWLABEL_MGR:
> -		retv = ipv6_flowlabel_opt(sk, optval, optlen);
> +		retv = ipv6_flowlabel_opt(sk, USER_SOCKPTR(optval), optlen);
>  		break;
>  	case IPV6_IPSEC_POLICY:
>  	case IPV6_XFRM_POLICY:
> -- 
> 2.27.0
> 

WARNING: multiple messages have this Message-ID (diff)
From: Ido Schimmel <idosch@idosch.org>
To: Christoph Hellwig <hch@lst.de>
Cc: "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>,
	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: Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t
Date: Mon, 27 Jul 2020 12:15:05 +0000	[thread overview]
Message-ID: <20200727121505.GA1804864@shredder> (raw)
In-Reply-To: <20200723060908.50081-20-hch@lst.de>

On Thu, Jul 23, 2020 at 08:09:01AM +0200, Christoph Hellwig wrote:
> Pass a sockptr_t to prepare for set_fs-less handling of the kernel
> pointer from bpf-cgroup.
> 
> Note that the get case is pretty weird in that it actually copies data
> back to userspace from setsockopt.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  include/net/ipv6.h       |  2 +-
>  net/ipv6/ip6_flowlabel.c | 16 +++++++++-------
>  net/ipv6/ipv6_sockglue.c |  2 +-
>  3 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/include/net/ipv6.h b/include/net/ipv6.h
> index 262fc88dbd7e2f..4c9d89b5d73268 100644
> --- a/include/net/ipv6.h
> +++ b/include/net/ipv6.h
> @@ -406,7 +406,7 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space,
>  					 struct ip6_flowlabel *fl,
>  					 struct ipv6_txoptions *fopt);
>  void fl6_free_socklist(struct sock *sk);
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen);
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen);
>  int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  			   int flags);
>  int ip6_flowlabel_init(void);
> diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
> index 27ee6de9beffc4..6b3c315f3d461a 100644
> --- a/net/ipv6/ip6_flowlabel.c
> +++ b/net/ipv6/ip6_flowlabel.c
> @@ -371,7 +371,7 @@ static int fl6_renew(struct ip6_flowlabel *fl, unsigned long linger, unsigned lo
>  
>  static struct ip6_flowlabel *
>  fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
> -	  char __user *optval, int optlen, int *err_p)
> +	  sockptr_t optval, int optlen, int *err_p)
>  {
>  	struct ip6_flowlabel *fl = NULL;
>  	int olen;
> @@ -401,7 +401,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
>  		memset(fl->opt, 0, sizeof(*fl->opt));
>  		fl->opt->tot_len = sizeof(*fl->opt) + olen;
>  		err = -EFAULT;
> -		if (copy_from_user(fl->opt+1, optval+CMSG_ALIGN(sizeof(*freq)), olen))
> +		sockptr_advance(optval, CMSG_ALIGN(sizeof(*freq)));
> +		if (copy_from_sockptr(fl->opt + 1, optval, olen))
>  			goto done;
>  
>  		msg.msg_controllen = olen;
> @@ -604,7 +605,7 @@ static int ipv6_flowlabel_renew(struct sock *sk, struct in6_flowlabel_req *freq)
>  }
>  
>  static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
> -		void __user *optval, int optlen)
> +		sockptr_t optval, int optlen)
>  {
>  	struct ipv6_fl_socklist *sfl, *sfl1 = NULL;
>  	struct ip6_flowlabel *fl, *fl1 = NULL;
> @@ -702,8 +703,9 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  		goto recheck;
>  
>  	if (!freq->flr_label) {
> -		if (copy_to_user(&((struct in6_flowlabel_req __user *) optval)->flr_label,
> -				 &fl->label, sizeof(fl->label))) {
> +		sockptr_advance(optval,
> +				offsetof(struct in6_flowlabel_req, flr_label));

Christoph,

I see a regression with IPv6 flowlabel that I bisected to this patch.
When passing '-F 0' to 'ping' the flow label should be random, yet it's
the same every time after this patch.

It seems that the pointer is never advanced after the call to
sockptr_advance() because it is passed by value and not by reference.
Even if you were to pass it by reference I think you would later need to
call sockptr_decrease() or something similar. Otherwise it is very
error-prone.

Maybe adding an offset to copy_to_sockptr() and copy_from_sockptr() is
better?

Thanks

> +		if (copy_to_sockptr(optval, &fl->label, sizeof(fl->label))) {
>  			/* Intentionally ignore fault. */
>  		}
>  	}
> @@ -716,13 +718,13 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  	return err;
>  }
>  
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen)
>  {
>  	struct in6_flowlabel_req freq;
>  
>  	if (optlen < sizeof(freq))
>  		return -EINVAL;
> -	if (copy_from_user(&freq, optval, sizeof(freq)))
> +	if (copy_from_sockptr(&freq, optval, sizeof(freq)))
>  		return -EFAULT;
>  
>  	switch (freq.flr_action) {
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 119dfaf5f4bb26..3897fb55372d38 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -929,7 +929,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>  		retv = 0;
>  		break;
>  	case IPV6_FLOWLABEL_MGR:
> -		retv = ipv6_flowlabel_opt(sk, optval, optlen);
> +		retv = ipv6_flowlabel_opt(sk, USER_SOCKPTR(optval), optlen);
>  		break;
>  	case IPV6_IPSEC_POLICY:
>  	case IPV6_XFRM_POLICY:
> -- 
> 2.27.0
> 

WARNING: multiple messages have this Message-ID (diff)
From: Ido Schimmel <idosch@idosch.org>
To: dccp@vger.kernel.org
Subject: Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t
Date: Mon, 27 Jul 2020 12:15:05 +0000	[thread overview]
Message-ID: <20200727121505.GA1804864@shredder> (raw)
In-Reply-To: <20200723060908.50081-20-hch@lst.de>

On Thu, Jul 23, 2020 at 08:09:01AM +0200, Christoph Hellwig wrote:
> Pass a sockptr_t to prepare for set_fs-less handling of the kernel
> pointer from bpf-cgroup.
> 
> Note that the get case is pretty weird in that it actually copies data
> back to userspace from setsockopt.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  include/net/ipv6.h       |  2 +-
>  net/ipv6/ip6_flowlabel.c | 16 +++++++++-------
>  net/ipv6/ipv6_sockglue.c |  2 +-
>  3 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/include/net/ipv6.h b/include/net/ipv6.h
> index 262fc88dbd7e2f..4c9d89b5d73268 100644
> --- a/include/net/ipv6.h
> +++ b/include/net/ipv6.h
> @@ -406,7 +406,7 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space,
>  					 struct ip6_flowlabel *fl,
>  					 struct ipv6_txoptions *fopt);
>  void fl6_free_socklist(struct sock *sk);
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen);
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen);
>  int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  			   int flags);
>  int ip6_flowlabel_init(void);
> diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
> index 27ee6de9beffc4..6b3c315f3d461a 100644
> --- a/net/ipv6/ip6_flowlabel.c
> +++ b/net/ipv6/ip6_flowlabel.c
> @@ -371,7 +371,7 @@ static int fl6_renew(struct ip6_flowlabel *fl, unsigned long linger, unsigned lo
>  
>  static struct ip6_flowlabel *
>  fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
> -	  char __user *optval, int optlen, int *err_p)
> +	  sockptr_t optval, int optlen, int *err_p)
>  {
>  	struct ip6_flowlabel *fl = NULL;
>  	int olen;
> @@ -401,7 +401,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
>  		memset(fl->opt, 0, sizeof(*fl->opt));
>  		fl->opt->tot_len = sizeof(*fl->opt) + olen;
>  		err = -EFAULT;
> -		if (copy_from_user(fl->opt+1, optval+CMSG_ALIGN(sizeof(*freq)), olen))
> +		sockptr_advance(optval, CMSG_ALIGN(sizeof(*freq)));
> +		if (copy_from_sockptr(fl->opt + 1, optval, olen))
>  			goto done;
>  
>  		msg.msg_controllen = olen;
> @@ -604,7 +605,7 @@ static int ipv6_flowlabel_renew(struct sock *sk, struct in6_flowlabel_req *freq)
>  }
>  
>  static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
> -		void __user *optval, int optlen)
> +		sockptr_t optval, int optlen)
>  {
>  	struct ipv6_fl_socklist *sfl, *sfl1 = NULL;
>  	struct ip6_flowlabel *fl, *fl1 = NULL;
> @@ -702,8 +703,9 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  		goto recheck;
>  
>  	if (!freq->flr_label) {
> -		if (copy_to_user(&((struct in6_flowlabel_req __user *) optval)->flr_label,
> -				 &fl->label, sizeof(fl->label))) {
> +		sockptr_advance(optval,
> +				offsetof(struct in6_flowlabel_req, flr_label));

Christoph,

I see a regression with IPv6 flowlabel that I bisected to this patch.
When passing '-F 0' to 'ping' the flow label should be random, yet it's
the same every time after this patch.

It seems that the pointer is never advanced after the call to
sockptr_advance() because it is passed by value and not by reference.
Even if you were to pass it by reference I think you would later need to
call sockptr_decrease() or something similar. Otherwise it is very
error-prone.

Maybe adding an offset to copy_to_sockptr() and copy_from_sockptr() is
better?

Thanks

> +		if (copy_to_sockptr(optval, &fl->label, sizeof(fl->label))) {
>  			/* Intentionally ignore fault. */
>  		}
>  	}
> @@ -716,13 +718,13 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  	return err;
>  }
>  
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen)
>  {
>  	struct in6_flowlabel_req freq;
>  
>  	if (optlen < sizeof(freq))
>  		return -EINVAL;
> -	if (copy_from_user(&freq, optval, sizeof(freq)))
> +	if (copy_from_sockptr(&freq, optval, sizeof(freq)))
>  		return -EFAULT;
>  
>  	switch (freq.flr_action) {
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 119dfaf5f4bb26..3897fb55372d38 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -929,7 +929,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>  		retv = 0;
>  		break;
>  	case IPV6_FLOWLABEL_MGR:
> -		retv = ipv6_flowlabel_opt(sk, optval, optlen);
> +		retv = ipv6_flowlabel_opt(sk, USER_SOCKPTR(optval), optlen);
>  		break;
>  	case IPV6_IPSEC_POLICY:
>  	case IPV6_XFRM_POLICY:
> -- 
> 2.27.0
> 

WARNING: multiple messages have this Message-ID (diff)
From: Ido Schimmel <idosch@idosch.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Alexei Starovoitov <ast@kernel.org>,
	linux-sctp@vger.kernel.org, linux-afs@lists.infradead.org,
	linux-s390@vger.kernel.org, rds-devel@oss.oracle.com,
	Daniel Borkmann <daniel@iogearbox.net>,
	dccp@vger.kernel.org, bridge@lists.linux-foundation.org,
	lvs-devel@vger.kernel.org, coreteam@netfilter.org,
	mptcp@lists.01.org, Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	linux-can@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
	linux-hams@vger.kernel.org,
	tipc-discussion@lists.sourceforge.net, linux-x25@vger.kernel.org,
	Eric Dumazet <edumazet@google.com>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	netdev@vger.kernel.org, linux-decnet-user@lists.sourceforge.net,
	linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	netfilter-devel@vger.kernel.org, linux-crypto@vger.kernel.org,
	bpf@vger.kernel.org, linux-wpan@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [Bridge] [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t
Date: Mon, 27 Jul 2020 15:15:05 +0300	[thread overview]
Message-ID: <20200727121505.GA1804864@shredder> (raw)
In-Reply-To: <20200723060908.50081-20-hch@lst.de>

On Thu, Jul 23, 2020 at 08:09:01AM +0200, Christoph Hellwig wrote:
> Pass a sockptr_t to prepare for set_fs-less handling of the kernel
> pointer from bpf-cgroup.
> 
> Note that the get case is pretty weird in that it actually copies data
> back to userspace from setsockopt.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  include/net/ipv6.h       |  2 +-
>  net/ipv6/ip6_flowlabel.c | 16 +++++++++-------
>  net/ipv6/ipv6_sockglue.c |  2 +-
>  3 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/include/net/ipv6.h b/include/net/ipv6.h
> index 262fc88dbd7e2f..4c9d89b5d73268 100644
> --- a/include/net/ipv6.h
> +++ b/include/net/ipv6.h
> @@ -406,7 +406,7 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space,
>  					 struct ip6_flowlabel *fl,
>  					 struct ipv6_txoptions *fopt);
>  void fl6_free_socklist(struct sock *sk);
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen);
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen);
>  int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  			   int flags);
>  int ip6_flowlabel_init(void);
> diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
> index 27ee6de9beffc4..6b3c315f3d461a 100644
> --- a/net/ipv6/ip6_flowlabel.c
> +++ b/net/ipv6/ip6_flowlabel.c
> @@ -371,7 +371,7 @@ static int fl6_renew(struct ip6_flowlabel *fl, unsigned long linger, unsigned lo
>  
>  static struct ip6_flowlabel *
>  fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
> -	  char __user *optval, int optlen, int *err_p)
> +	  sockptr_t optval, int optlen, int *err_p)
>  {
>  	struct ip6_flowlabel *fl = NULL;
>  	int olen;
> @@ -401,7 +401,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
>  		memset(fl->opt, 0, sizeof(*fl->opt));
>  		fl->opt->tot_len = sizeof(*fl->opt) + olen;
>  		err = -EFAULT;
> -		if (copy_from_user(fl->opt+1, optval+CMSG_ALIGN(sizeof(*freq)), olen))
> +		sockptr_advance(optval, CMSG_ALIGN(sizeof(*freq)));
> +		if (copy_from_sockptr(fl->opt + 1, optval, olen))
>  			goto done;
>  
>  		msg.msg_controllen = olen;
> @@ -604,7 +605,7 @@ static int ipv6_flowlabel_renew(struct sock *sk, struct in6_flowlabel_req *freq)
>  }
>  
>  static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
> -		void __user *optval, int optlen)
> +		sockptr_t optval, int optlen)
>  {
>  	struct ipv6_fl_socklist *sfl, *sfl1 = NULL;
>  	struct ip6_flowlabel *fl, *fl1 = NULL;
> @@ -702,8 +703,9 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  		goto recheck;
>  
>  	if (!freq->flr_label) {
> -		if (copy_to_user(&((struct in6_flowlabel_req __user *) optval)->flr_label,
> -				 &fl->label, sizeof(fl->label))) {
> +		sockptr_advance(optval,
> +				offsetof(struct in6_flowlabel_req, flr_label));

Christoph,

I see a regression with IPv6 flowlabel that I bisected to this patch.
When passing '-F 0' to 'ping' the flow label should be random, yet it's
the same every time after this patch.

It seems that the pointer is never advanced after the call to
sockptr_advance() because it is passed by value and not by reference.
Even if you were to pass it by reference I think you would later need to
call sockptr_decrease() or something similar. Otherwise it is very
error-prone.

Maybe adding an offset to copy_to_sockptr() and copy_from_sockptr() is
better?

Thanks

> +		if (copy_to_sockptr(optval, &fl->label, sizeof(fl->label))) {
>  			/* Intentionally ignore fault. */
>  		}
>  	}
> @@ -716,13 +718,13 @@ static int ipv6_flowlabel_get(struct sock *sk, struct in6_flowlabel_req *freq,
>  	return err;
>  }
>  
> -int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
> +int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen)
>  {
>  	struct in6_flowlabel_req freq;
>  
>  	if (optlen < sizeof(freq))
>  		return -EINVAL;
> -	if (copy_from_user(&freq, optval, sizeof(freq)))
> +	if (copy_from_sockptr(&freq, optval, sizeof(freq)))
>  		return -EFAULT;
>  
>  	switch (freq.flr_action) {
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 119dfaf5f4bb26..3897fb55372d38 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -929,7 +929,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>  		retv = 0;
>  		break;
>  	case IPV6_FLOWLABEL_MGR:
> -		retv = ipv6_flowlabel_opt(sk, optval, optlen);
> +		retv = ipv6_flowlabel_opt(sk, USER_SOCKPTR(optval), optlen);
>  		break;
>  	case IPV6_IPSEC_POLICY:
>  	case IPV6_XFRM_POLICY:
> -- 
> 2.27.0
> 

             reply	other threads:[~2020-07-27 12:15 UTC|newest]

Thread overview: 656+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-27 12:15 Ido Schimmel [this message]
2020-07-27 12:15 ` [Bridge] [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t 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
  -- 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-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 15/24] net/ipv4: switch do_ip_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 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=20200727121505.GA1804864@shredder \
    --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.