All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Laight <David.Laight at ACULAB.COM>
To: mptcp at lists.01.org
Subject: [MPTCP] Re: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt
Date: Sat, 08 Aug 2020 13:54:06 +0000	[thread overview]
Message-ID: <ed3741fdf1774cfbbd59d06ecb6994d8@AcuMS.aculab.com> (raw)
In-Reply-To: 90f626a4-d9e5-91a5-b71d-498e3b125da1@gmail.com

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

From: Eric Dumazet
> Sent: 07 August 2020 19:29
> 
> On 8/7/20 2:18 AM, David Laight wrote:
> > From: Eric Dumazet
> >> Sent: 06 August 2020 23:21
> >>
> >> On 7/22/20 11:09 PM, Christoph Hellwig wrote:
> >>> Rework the remaining setsockopt code to pass a sockptr_t instead of a
> >>> plain user pointer.  This removes the last remaining set_fs(KERNEL_DS)
> >>> outside of architecture specific code.
> >>>
> >>> Signed-off-by: Christoph Hellwig <hch(a)lst.de>
> >>> Acked-by: Stefan Schmidt <stefan(a)datenfreihafen.org> [ieee802154]
> >>> ---
> >>
> >>
> >> ...
> >>
> >>> diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
> >>> index 594e01ad670aa6..874f01cd7aec42 100644
> >>> --- a/net/ipv6/raw.c
> >>> +++ b/net/ipv6/raw.c
> >>> @@ -972,13 +972,13 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
> >>>  }
> >>>
> >>
> >> ...
> >>
> >>>  static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
> >>> -			    char __user *optval, unsigned int optlen)
> >>> +			       sockptr_t optval, unsigned int optlen)
> >>>  {
> >>>  	struct raw6_sock *rp = raw6_sk(sk);
> >>>  	int val;
> >>>
> >>> -	if (get_user(val, (int __user *)optval))
> >>> +	if (copy_from_sockptr(&val, optval, sizeof(val)))
> >>>  		return -EFAULT;
> >>>
> >>
> >> converting get_user(...)   to  copy_from_sockptr(...) really assumed the optlen
> >> has been validated to be >= sizeof(int) earlier.
> >>
> >> Which is not always the case, for example here.
> >>
> >> User application can fool us passing optlen=0, and a user pointer of exactly TASK_SIZE-1
> >
> > Won't the user pointer force copy_from_sockptr() to call
> > copy_from_user() which will then do access_ok() on the entire
> > range and so return -EFAULT.
> >
> > The only problems arise if the kernel code adds an offset to the
> > user address.
> > And the later patch added an offset to the copy functions.
> 
> I dunno, I definitely got the following syzbot crash
> 
> No repro found by syzbot yet, but I suspect a 32bit binary program
> did :
> 
> setsockopt(fd, 0x29, 0x24, 0xffffffffffffffff, 0x0)

A few too many ffs...

> BUG: KASAN: wild-memory-access in memcpy include/linux/string.h:406 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr_offset include/linux/sockptr.h:71 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr include/linux/sockptr.h:77 [inline]
> BUG: KASAN: wild-memory-access in do_rawv6_setsockopt net/ipv6/raw.c:1023 [inline]
> BUG: KASAN: wild-memory-access in rawv6_setsockopt+0x1a1/0x6f0 net/ipv6/raw.c:1084
> Read of size 4 at addr 00000000ffffffff by task syz-executor.0/28251

Yep, the code is nearly, but not quite right.
The problem is almost certainly that access_ok(x, 0) always returns success.

In any case the check for a valid user address ought to be exactly
the same one that later selects between copy_to/from_user() and memcpy().

The latter compares the address against 'TASK_SIZE'.
However that isn't the right value either - I think it reads
the value from 'current' that set_fs() sets.
What this code needs is any address that is above the highest
user address and below (or equal to) to lowest kernel one.

On i386 (and probably most 32bit linux) this is 0xc0000000.
On x86-64 this could be any address in the address 'black hole'.
Picking 1ull<<63 may be best.
Quite what the correct #define is requires further research.

There is actually scope for making init_user_sockptr(kern_address)
save a value that will cause copy_to/from_sockptr() go into
the user-copy path with an address that access_ok() will reject.
Then the -EFAULT will get generated in the 'expected' place
and there is no scope for failing to test it's return value.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

WARNING: multiple messages have this Message-ID (diff)
From: David Laight <David.Laight@ACULAB.COM>
To: 'Eric Dumazet' <eric.dumazet@gmail.com>,
	Christoph Hellwig <hch@lst.de>,
	"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-crypto@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
	"netfilter-devel@vger.kernel.org"
	<netfilter-devel@vger.kernel.org>,
	"coreteam@netfilter.org" <coreteam@netfilter.org>,
	"linux-sctp@vger.kernel.org" <linux-sctp@vger.kernel.org>,
	"linux-hams@vger.kernel.org" <linux-hams@vger.kernel.org>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>,
	"bridge@lists.linux-foundation.org" 
	<bridge@lists.linux-foundation.org>,
	"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
	"dccp@vger.kernel.org" <dccp@vger.kernel.org>,
	"linux-decnet-user@lists.sourceforge.net" 
	<linux-decnet-user@lists.sourceforge.net>,
	"linux-wpan@vger.kernel.org" <linux-wpan@vger.kernel.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"mptcp@lists.01.org" <mptcp@lists.01.org>,
	"lvs-devel@vger.kernel.org" <lvs-devel@vger.kernel.org>,
	"rds-devel@oss.oracle.com" <rds-devel@oss.oracle.com>,
	"linux-afs@lists.infradead.org" <linux-afs@lists.infradead.org>,
	"tipc-discussion@lists.sourceforge.net" 
	<tipc-discussion@lists.sourceforge.net>,
	"linux-x25@vger.kernel.org" <linux-x25@vger.kernel.org>,
	Stefan Schmidt <stefan@datenfreihafen.org>
Subject: RE: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt
Date: Sat, 8 Aug 2020 13:54:06 +0000	[thread overview]
Message-ID: <ed3741fdf1774cfbbd59d06ecb6994d8@AcuMS.aculab.com> (raw)
In-Reply-To: <90f626a4-d9e5-91a5-b71d-498e3b125da1@gmail.com>

From: Eric Dumazet
> Sent: 07 August 2020 19:29
> 
> On 8/7/20 2:18 AM, David Laight wrote:
> > From: Eric Dumazet
> >> Sent: 06 August 2020 23:21
> >>
> >> On 7/22/20 11:09 PM, Christoph Hellwig wrote:
> >>> Rework the remaining setsockopt code to pass a sockptr_t instead of a
> >>> plain user pointer.  This removes the last remaining set_fs(KERNEL_DS)
> >>> outside of architecture specific code.
> >>>
> >>> Signed-off-by: Christoph Hellwig <hch@lst.de>
> >>> Acked-by: Stefan Schmidt <stefan@datenfreihafen.org> [ieee802154]
> >>> ---
> >>
> >>
> >> ...
> >>
> >>> diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
> >>> index 594e01ad670aa6..874f01cd7aec42 100644
> >>> --- a/net/ipv6/raw.c
> >>> +++ b/net/ipv6/raw.c
> >>> @@ -972,13 +972,13 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
> >>>  }
> >>>
> >>
> >> ...
> >>
> >>>  static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
> >>> -			    char __user *optval, unsigned int optlen)
> >>> +			       sockptr_t optval, unsigned int optlen)
> >>>  {
> >>>  	struct raw6_sock *rp = raw6_sk(sk);
> >>>  	int val;
> >>>
> >>> -	if (get_user(val, (int __user *)optval))
> >>> +	if (copy_from_sockptr(&val, optval, sizeof(val)))
> >>>  		return -EFAULT;
> >>>
> >>
> >> converting get_user(...)   to  copy_from_sockptr(...) really assumed the optlen
> >> has been validated to be >= sizeof(int) earlier.
> >>
> >> Which is not always the case, for example here.
> >>
> >> User application can fool us passing optlen=0, and a user pointer of exactly TASK_SIZE-1
> >
> > Won't the user pointer force copy_from_sockptr() to call
> > copy_from_user() which will then do access_ok() on the entire
> > range and so return -EFAULT.
> >
> > The only problems arise if the kernel code adds an offset to the
> > user address.
> > And the later patch added an offset to the copy functions.
> 
> I dunno, I definitely got the following syzbot crash
> 
> No repro found by syzbot yet, but I suspect a 32bit binary program
> did :
> 
> setsockopt(fd, 0x29, 0x24, 0xffffffffffffffff, 0x0)

A few too many ffs...

> BUG: KASAN: wild-memory-access in memcpy include/linux/string.h:406 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr_offset include/linux/sockptr.h:71 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr include/linux/sockptr.h:77 [inline]
> BUG: KASAN: wild-memory-access in do_rawv6_setsockopt net/ipv6/raw.c:1023 [inline]
> BUG: KASAN: wild-memory-access in rawv6_setsockopt+0x1a1/0x6f0 net/ipv6/raw.c:1084
> Read of size 4 at addr 00000000ffffffff by task syz-executor.0/28251

Yep, the code is nearly, but not quite right.
The problem is almost certainly that access_ok(x, 0) always returns success.

In any case the check for a valid user address ought to be exactly
the same one that later selects between copy_to/from_user() and memcpy().

The latter compares the address against 'TASK_SIZE'.
However that isn't the right value either - I think it reads
the value from 'current' that set_fs() sets.
What this code needs is any address that is above the highest
user address and below (or equal to) to lowest kernel one.

On i386 (and probably most 32bit linux) this is 0xc0000000.
On x86-64 this could be any address in the address 'black hole'.
Picking 1ull<<63 may be best.
Quite what the correct #define is requires further research.

There is actually scope for making init_user_sockptr(kern_address)
save a value that will cause copy_to/from_sockptr() go into
the user-copy path with an address that access_ok() will reject.
Then the -EFAULT will get generated in the 'expected' place
and there is no scope for failing to test it's return value.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

WARNING: multiple messages have this Message-ID (diff)
From: David Laight <David.Laight@ACULAB.COM>
To: 'Eric Dumazet' <eric.dumazet@gmail.com>,
	Christoph Hellwig <hch@lst.de>,
	"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-crypto@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
	"netfilter-devel@vger.kernel.org"
	<netfilter-devel@vger.kernel.org>,
	"coreteam@netfilter.org" <coreteam@netfilter.org>,
	"linux-sctp@vger.kernel.org" <linux-sctp@vger.kernel.org>,
	"linux-hams@vger.kernel.org" <linux-hams@vger.kernel.org>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>,
	"bridge@lists.linux-foundation.org"
	<bridge@lists.linux-foundation.org>,
	"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
	"dccp@vger.kernel.org" <dccp@vger.kernel.org>,
	"linux-decnet-user@lists.sourceforge.net"
	<linux-decnet-user@lists.sourcefor>
Subject: RE: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt
Date: Sat, 8 Aug 2020 13:54:06 +0000	[thread overview]
Message-ID: <ed3741fdf1774cfbbd59d06ecb6994d8@AcuMS.aculab.com> (raw)
In-Reply-To: <90f626a4-d9e5-91a5-b71d-498e3b125da1@gmail.com>

From: Eric Dumazet
> Sent: 07 August 2020 19:29
> 
> On 8/7/20 2:18 AM, David Laight wrote:
> > From: Eric Dumazet
> >> Sent: 06 August 2020 23:21
> >>
> >> On 7/22/20 11:09 PM, Christoph Hellwig wrote:
> >>> Rework the remaining setsockopt code to pass a sockptr_t instead of a
> >>> plain user pointer.  This removes the last remaining set_fs(KERNEL_DS)
> >>> outside of architecture specific code.
> >>>
> >>> Signed-off-by: Christoph Hellwig <hch@lst.de>
> >>> Acked-by: Stefan Schmidt <stefan@datenfreihafen.org> [ieee802154]
> >>> ---
> >>
> >>
> >> ...
> >>
> >>> diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
> >>> index 594e01ad670aa6..874f01cd7aec42 100644
> >>> --- a/net/ipv6/raw.c
> >>> +++ b/net/ipv6/raw.c
> >>> @@ -972,13 +972,13 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
> >>>  }
> >>>
> >>
> >> ...
> >>
> >>>  static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
> >>> -			    char __user *optval, unsigned int optlen)
> >>> +			       sockptr_t optval, unsigned int optlen)
> >>>  {
> >>>  	struct raw6_sock *rp = raw6_sk(sk);
> >>>  	int val;
> >>>
> >>> -	if (get_user(val, (int __user *)optval))
> >>> +	if (copy_from_sockptr(&val, optval, sizeof(val)))
> >>>  		return -EFAULT;
> >>>
> >>
> >> converting get_user(...)   to  copy_from_sockptr(...) really assumed the optlen
> >> has been validated to be >= sizeof(int) earlier.
> >>
> >> Which is not always the case, for example here.
> >>
> >> User application can fool us passing optlen=0, and a user pointer of exactly TASK_SIZE-1
> >
> > Won't the user pointer force copy_from_sockptr() to call
> > copy_from_user() which will then do access_ok() on the entire
> > range and so return -EFAULT.
> >
> > The only problems arise if the kernel code adds an offset to the
> > user address.
> > And the later patch added an offset to the copy functions.
> 
> I dunno, I definitely got the following syzbot crash
> 
> No repro found by syzbot yet, but I suspect a 32bit binary program
> did :
> 
> setsockopt(fd, 0x29, 0x24, 0xffffffffffffffff, 0x0)

A few too many ffs...

> BUG: KASAN: wild-memory-access in memcpy include/linux/string.h:406 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr_offset include/linux/sockptr.h:71 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr include/linux/sockptr.h:77 [inline]
> BUG: KASAN: wild-memory-access in do_rawv6_setsockopt net/ipv6/raw.c:1023 [inline]
> BUG: KASAN: wild-memory-access in rawv6_setsockopt+0x1a1/0x6f0 net/ipv6/raw.c:1084
> Read of size 4 at addr 00000000ffffffff by task syz-executor.0/28251

Yep, the code is nearly, but not quite right.
The problem is almost certainly that access_ok(x, 0) always returns success.

In any case the check for a valid user address ought to be exactly
the same one that later selects between copy_to/from_user() and memcpy().

The latter compares the address against 'TASK_SIZE'.
However that isn't the right value either - I think it reads
the value from 'current' that set_fs() sets.
What this code needs is any address that is above the highest
user address and below (or equal to) to lowest kernel one.

On i386 (and probably most 32bit linux) this is 0xc0000000.
On x86-64 this could be any address in the address 'black hole'.
Picking 1ull<<63 may be best.
Quite what the correct #define is requires further research.

There is actually scope for making init_user_sockptr(kern_address)
save a value that will cause copy_to/from_sockptr() go into
the user-copy path with an address that access_ok() will reject.
Then the -EFAULT will get generated in the 'expected' place
and there is no scope for failing to test it's return value.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

WARNING: multiple messages have this Message-ID (diff)
From: David Laight <David.Laight@ACULAB.COM>
To: 'Eric Dumazet' <eric.dumazet@gmail.com>,
	Christoph Hellwig <hch@lst.de>,
	"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-crypto@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
	"netfilter-devel@vger.kernel.org"
	<netfilter-devel@vger.kernel.org>,
	"coreteam@netfilter.org" <coreteam@netfilter.org>,
	"linux-sctp@vger.kernel.org" <linux-sctp@vger.kernel.org>,
	"linux-hams@vger.kernel.org" <linux-hams@vger.kernel.org>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>,
	"bridge@lists.linux-foundation.org"
	<bridge@lists.linux-foundation.org>,
	"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
	"dccp@vger.kernel.org" <dccp@vger.kernel.org>,
	"linux-decnet-user@lists.sourceforge.net"
	<linux-decnet-user@lists.sourceforge.net>,
	"linux-wpan@vger.kernel.org" <linux-wpan@vger.kernel.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"mptcp@lists.01.org" <mptcp@lists.01.org>,
	"lvs-devel@vger.kernel.org" <lvs-devel@vger.kernel.org>,
	"rds-devel@oss.oracle.com" <rds-devel@oss.oracle.com>,
	"linux-afs@lists.infradead.org" <linux-afs@lists.infradead.org>,
	"tipc-discussion@lists.sourceforge.net"
	<tipc-discussion@lists.sourceforge.net>,
	"linux-x25@vger.kernel.org" <linux-x25@vger.kernel.org>,
	Stefan Schmidt <stefan@datenfreihafen.org>
Subject: RE: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt
Date: Sat, 8 Aug 2020 13:54:06 +0000	[thread overview]
Message-ID: <ed3741fdf1774cfbbd59d06ecb6994d8@AcuMS.aculab.com> (raw)
In-Reply-To: <90f626a4-d9e5-91a5-b71d-498e3b125da1@gmail.com>

From: Eric Dumazet
> Sent: 07 August 2020 19:29
> 
> On 8/7/20 2:18 AM, David Laight wrote:
> > From: Eric Dumazet
> >> Sent: 06 August 2020 23:21
> >>
> >> On 7/22/20 11:09 PM, Christoph Hellwig wrote:
> >>> Rework the remaining setsockopt code to pass a sockptr_t instead of a
> >>> plain user pointer.  This removes the last remaining set_fs(KERNEL_DS)
> >>> outside of architecture specific code.
> >>>
> >>> Signed-off-by: Christoph Hellwig <hch@lst.de>
> >>> Acked-by: Stefan Schmidt <stefan@datenfreihafen.org> [ieee802154]
> >>> ---
> >>
> >>
> >> ...
> >>
> >>> diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
> >>> index 594e01ad670aa6..874f01cd7aec42 100644
> >>> --- a/net/ipv6/raw.c
> >>> +++ b/net/ipv6/raw.c
> >>> @@ -972,13 +972,13 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
> >>>  }
> >>>
> >>
> >> ...
> >>
> >>>  static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
> >>> -			    char __user *optval, unsigned int optlen)
> >>> +			       sockptr_t optval, unsigned int optlen)
> >>>  {
> >>>  	struct raw6_sock *rp = raw6_sk(sk);
> >>>  	int val;
> >>>
> >>> -	if (get_user(val, (int __user *)optval))
> >>> +	if (copy_from_sockptr(&val, optval, sizeof(val)))
> >>>  		return -EFAULT;
> >>>
> >>
> >> converting get_user(...)   to  copy_from_sockptr(...) really assumed the optlen
> >> has been validated to be >= sizeof(int) earlier.
> >>
> >> Which is not always the case, for example here.
> >>
> >> User application can fool us passing optlen=0, and a user pointer of exactly TASK_SIZE-1
> >
> > Won't the user pointer force copy_from_sockptr() to call
> > copy_from_user() which will then do access_ok() on the entire
> > range and so return -EFAULT.
> >
> > The only problems arise if the kernel code adds an offset to the
> > user address.
> > And the later patch added an offset to the copy functions.
> 
> I dunno, I definitely got the following syzbot crash
> 
> No repro found by syzbot yet, but I suspect a 32bit binary program
> did :
> 
> setsockopt(fd, 0x29, 0x24, 0xffffffffffffffff, 0x0)

A few too many ffs...

> BUG: KASAN: wild-memory-access in memcpy include/linux/string.h:406 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr_offset include/linux/sockptr.h:71 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr include/linux/sockptr.h:77 [inline]
> BUG: KASAN: wild-memory-access in do_rawv6_setsockopt net/ipv6/raw.c:1023 [inline]
> BUG: KASAN: wild-memory-access in rawv6_setsockopt+0x1a1/0x6f0 net/ipv6/raw.c:1084
> Read of size 4 at addr 00000000ffffffff by task syz-executor.0/28251

Yep, the code is nearly, but not quite right.
The problem is almost certainly that access_ok(x, 0) always returns success.

In any case the check for a valid user address ought to be exactly
the same one that later selects between copy_to/from_user() and memcpy().

The latter compares the address against 'TASK_SIZE'.
However that isn't the right value either - I think it reads
the value from 'current' that set_fs() sets.
What this code needs is any address that is above the highest
user address and below (or equal to) to lowest kernel one.

On i386 (and probably most 32bit linux) this is 0xc0000000.
On x86-64 this could be any address in the address 'black hole'.
Picking 1ull<<63 may be best.
Quite what the correct #define is requires further research.

There is actually scope for making init_user_sockptr(kern_address)
save a value that will cause copy_to/from_sockptr() go into
the user-copy path with an address that access_ok() will reject.
Then the -EFAULT will get generated in the 'expected' place
and there is no scope for failing to test it's return value.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

WARNING: multiple messages have this Message-ID (diff)
From: David Laight <David.Laight@ACULAB.COM>
To: 'Eric Dumazet' <eric.dumazet@gmail.com>,
	Christoph Hellwig <hch@lst.de>,
	"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-crypto@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
	"netfilter-devel@vger.kernel.org"
	<netfilter-devel@vger.kernel.org>,
	"coreteam@netfilter.org" <coreteam@netfilter.org>,
	"linux-sctp@vger.kernel.org" <linux-sctp@vger.kernel.org>,
	"linux-hams@vger.kernel.org" <linux-hams@vger.kernel.org>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>,
	"bridge@lists.linux-foundation.org"
	<bridge@lists.linux-foundation.org>,
	"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
	"dccp@vger.kernel.org" <dccp@vger.kernel.org>,
	"linux-decnet-user@lists.sourceforge.net"
	<linux-decnet-user@lists.sourceforge.net>,
	"linux-wpan@vger.kernel.org" <linux-wpan@vger.kernel.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"mptcp@lists.01.org" <mptcp@lists.01.org>,
	"lvs-devel@vger.kernel.org" <lvs-devel@vger.kernel.org>,
	"rds-devel@oss.oracle.com" <rds-devel@oss.oracle.com>,
	"linux-afs@lists.infradead.org" <linux-afs@lists.infradead.org>,
	"tipc-discussion@lists.sourceforge.net"
	<tipc-discussion@lists.sourceforge.net>,
	"linux-x25@vger.kernel.org" <linux-x25@vger.kernel.org>,
	Stefan Schmidt <stefan@datenfreihafen.org>
Subject: RE: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt
Date: Sat, 08 Aug 2020 13:54:06 +0000	[thread overview]
Message-ID: <ed3741fdf1774cfbbd59d06ecb6994d8@AcuMS.aculab.com> (raw)
In-Reply-To: <90f626a4-d9e5-91a5-b71d-498e3b125da1@gmail.com>

RnJvbTogRXJpYyBEdW1hemV0DQo+IFNlbnQ6IDA3IEF1Z3VzdCAyMDIwIDE5OjI5DQo+IA0KPiBP
biA4LzcvMjAgMjoxOCBBTSwgRGF2aWQgTGFpZ2h0IHdyb3RlOg0KPiA+IEZyb206IEVyaWMgRHVt
YXpldA0KPiA+PiBTZW50OiAwNiBBdWd1c3QgMjAyMCAyMzoyMQ0KPiA+Pg0KPiA+PiBPbiA3LzIy
LzIwIDExOjA5IFBNLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90ZToNCj4gPj4+IFJld29yayB0aGUg
cmVtYWluaW5nIHNldHNvY2tvcHQgY29kZSB0byBwYXNzIGEgc29ja3B0cl90IGluc3RlYWQgb2Yg
YQ0KPiA+Pj4gcGxhaW4gdXNlciBwb2ludGVyLiAgVGhpcyByZW1vdmVzIHRoZSBsYXN0IHJlbWFp
bmluZyBzZXRfZnMoS0VSTkVMX0RTKQ0KPiA+Pj4gb3V0c2lkZSBvZiBhcmNoaXRlY3R1cmUgc3Bl
Y2lmaWMgY29kZS4NCj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdp
ZyA8aGNoQGxzdC5kZT4NCj4gPj4+IEFja2VkLWJ5OiBTdGVmYW4gU2NobWlkdCA8c3RlZmFuQGRh
dGVuZnJlaWhhZmVuLm9yZz4gW2llZWU4MDIxNTRdDQo+ID4+PiAtLS0NCj4gPj4NCj4gPj4NCj4g
Pj4gLi4uDQo+ID4+DQo+ID4+PiBkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmF3LmMgYi9uZXQvaXB2
Ni9yYXcuYw0KPiA+Pj4gaW5kZXggNTk0ZTAxYWQ2NzBhYTYuLjg3NGYwMWNkN2FlYzQyIDEwMDY0
NA0KPiA+Pj4gLS0tIGEvbmV0L2lwdjYvcmF3LmMNCj4gPj4+ICsrKyBiL25ldC9pcHY2L3Jhdy5j
DQo+ID4+PiBAQCAtOTcyLDEzICs5NzIsMTMgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0
cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKQ0KPiA+Pj4gIH0N
Cj4gPj4+DQo+ID4+DQo+ID4+IC4uLg0KPiA+Pg0KPiA+Pj4gIHN0YXRpYyBpbnQgZG9fcmF3djZf
c2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsDQo+ID4+
PiAtCQkJICAgIGNoYXIgX191c2VyICpvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pDQo+ID4+
PiArCQkJICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pDQo+ID4+
PiAgew0KPiA+Pj4gIAlzdHJ1Y3QgcmF3Nl9zb2NrICpycCA9IHJhdzZfc2soc2spOw0KPiA+Pj4g
IAlpbnQgdmFsOw0KPiA+Pj4NCj4gPj4+IC0JaWYgKGdldF91c2VyKHZhbCwgKGludCBfX3VzZXIg
KilvcHR2YWwpKQ0KPiA+Pj4gKwlpZiAoY29weV9mcm9tX3NvY2twdHIoJnZhbCwgb3B0dmFsLCBz
aXplb2YodmFsKSkpDQo+ID4+PiAgCQlyZXR1cm4gLUVGQVVMVDsNCj4gPj4+DQo+ID4+DQo+ID4+
IGNvbnZlcnRpbmcgZ2V0X3VzZXIoLi4uKSAgIHRvICBjb3B5X2Zyb21fc29ja3B0ciguLi4pIHJl
YWxseSBhc3N1bWVkIHRoZSBvcHRsZW4NCj4gPj4gaGFzIGJlZW4gdmFsaWRhdGVkIHRvIGJlID49
IHNpemVvZihpbnQpIGVhcmxpZXIuDQo+ID4+DQo+ID4+IFdoaWNoIGlzIG5vdCBhbHdheXMgdGhl
IGNhc2UsIGZvciBleGFtcGxlIGhlcmUuDQo+ID4+DQo+ID4+IFVzZXIgYXBwbGljYXRpb24gY2Fu
IGZvb2wgdXMgcGFzc2luZyBvcHRsZW49MCwgYW5kIGEgdXNlciBwb2ludGVyIG9mIGV4YWN0bHkg
VEFTS19TSVpFLTENCj4gPg0KPiA+IFdvbid0IHRoZSB1c2VyIHBvaW50ZXIgZm9yY2UgY29weV9m
cm9tX3NvY2twdHIoKSB0byBjYWxsDQo+ID4gY29weV9mcm9tX3VzZXIoKSB3aGljaCB3aWxsIHRo
ZW4gZG8gYWNjZXNzX29rKCkgb24gdGhlIGVudGlyZQ0KPiA+IHJhbmdlIGFuZCBzbyByZXR1cm4g
LUVGQVVMVC4NCj4gPg0KPiA+IFRoZSBvbmx5IHByb2JsZW1zIGFyaXNlIGlmIHRoZSBrZXJuZWwg
Y29kZSBhZGRzIGFuIG9mZnNldCB0byB0aGUNCj4gPiB1c2VyIGFkZHJlc3MuDQo+ID4gQW5kIHRo
ZSBsYXRlciBwYXRjaCBhZGRlZCBhbiBvZmZzZXQgdG8gdGhlIGNvcHkgZnVuY3Rpb25zLg0KPiAN
Cj4gSSBkdW5ubywgSSBkZWZpbml0ZWx5IGdvdCB0aGUgZm9sbG93aW5nIHN5emJvdCBjcmFzaA0K
PiANCj4gTm8gcmVwcm8gZm91bmQgYnkgc3l6Ym90IHlldCwgYnV0IEkgc3VzcGVjdCBhIDMyYml0
IGJpbmFyeSBwcm9ncmFtDQo+IGRpZCA6DQo+IA0KPiBzZXRzb2Nrb3B0KGZkLCAweDI5LCAweDI0
LCAweGZmZmZmZmZmZmZmZmZmZmYsIDB4MCkNCg0KQSBmZXcgdG9vIG1hbnkgZmZzLi4uDQoNCj4g
QlVHOiBLQVNBTjogd2lsZC1tZW1vcnktYWNjZXNzIGluIG1lbWNweSBpbmNsdWRlL2xpbnV4L3N0
cmluZy5oOjQwNiBbaW5saW5lXQ0KPiBCVUc6IEtBU0FOOiB3aWxkLW1lbW9yeS1hY2Nlc3MgaW4g
Y29weV9mcm9tX3NvY2twdHJfb2Zmc2V0IGluY2x1ZGUvbGludXgvc29ja3B0ci5oOjcxIFtpbmxp
bmVdDQo+IEJVRzogS0FTQU46IHdpbGQtbWVtb3J5LWFjY2VzcyBpbiBjb3B5X2Zyb21fc29ja3B0
ciBpbmNsdWRlL2xpbnV4L3NvY2twdHIuaDo3NyBbaW5saW5lXQ0KPiBCVUc6IEtBU0FOOiB3aWxk
LW1lbW9yeS1hY2Nlc3MgaW4gZG9fcmF3djZfc2V0c29ja29wdCBuZXQvaXB2Ni9yYXcuYzoxMDIz
IFtpbmxpbmVdDQo+IEJVRzogS0FTQU46IHdpbGQtbWVtb3J5LWFjY2VzcyBpbiByYXd2Nl9zZXRz
b2Nrb3B0KzB4MWExLzB4NmYwIG5ldC9pcHY2L3Jhdy5jOjEwODQNCj4gUmVhZCBvZiBzaXplIDQg
YXQgYWRkciAwMDAwMDAwMGZmZmZmZmZmIGJ5IHRhc2sgc3l6LWV4ZWN1dG9yLjAvMjgyNTENCg0K
WWVwLCB0aGUgY29kZSBpcyBuZWFybHksIGJ1dCBub3QgcXVpdGUgcmlnaHQuDQpUaGUgcHJvYmxl
bSBpcyBhbG1vc3QgY2VydGFpbmx5IHRoYXQgYWNjZXNzX29rKHgsIDApIGFsd2F5cyByZXR1cm5z
IHN1Y2Nlc3MuDQoNCkluIGFueSBjYXNlIHRoZSBjaGVjayBmb3IgYSB2YWxpZCB1c2VyIGFkZHJl
c3Mgb3VnaHQgdG8gYmUgZXhhY3RseQ0KdGhlIHNhbWUgb25lIHRoYXQgbGF0ZXIgc2VsZWN0cyBi
ZXR3ZWVuIGNvcHlfdG8vZnJvbV91c2VyKCkgYW5kIG1lbWNweSgpLg0KDQpUaGUgbGF0dGVyIGNv
bXBhcmVzIHRoZSBhZGRyZXNzIGFnYWluc3QgJ1RBU0tfU0laRScuDQpIb3dldmVyIHRoYXQgaXNu
J3QgdGhlIHJpZ2h0IHZhbHVlIGVpdGhlciAtIEkgdGhpbmsgaXQgcmVhZHMNCnRoZSB2YWx1ZSBm
cm9tICdjdXJyZW50JyB0aGF0IHNldF9mcygpIHNldHMuDQpXaGF0IHRoaXMgY29kZSBuZWVkcyBp
cyBhbnkgYWRkcmVzcyB0aGF0IGlzIGFib3ZlIHRoZSBoaWdoZXN0DQp1c2VyIGFkZHJlc3MgYW5k
IGJlbG93IChvciBlcXVhbCB0bykgdG8gbG93ZXN0IGtlcm5lbCBvbmUuDQoNCk9uIGkzODYgKGFu
ZCBwcm9iYWJseSBtb3N0IDMyYml0IGxpbnV4KSB0aGlzIGlzIDB4YzAwMDAwMDAuDQpPbiB4ODYt
NjQgdGhpcyBjb3VsZCBiZSBhbnkgYWRkcmVzcyBpbiB0aGUgYWRkcmVzcyAnYmxhY2sgaG9sZScu
DQpQaWNraW5nIDF1bGw8PDYzIG1heSBiZSBiZXN0Lg0KUXVpdGUgd2hhdCB0aGUgY29ycmVjdCAj
ZGVmaW5lIGlzIHJlcXVpcmVzIGZ1cnRoZXIgcmVzZWFyY2guDQoNClRoZXJlIGlzIGFjdHVhbGx5
IHNjb3BlIGZvciBtYWtpbmcgaW5pdF91c2VyX3NvY2twdHIoa2Vybl9hZGRyZXNzKQ0Kc2F2ZSBh
IHZhbHVlIHRoYXQgd2lsbCBjYXVzZSBjb3B5X3RvL2Zyb21fc29ja3B0cigpIGdvIGludG8NCnRo
ZSB1c2VyLWNvcHkgcGF0aCB3aXRoIGFuIGFkZHJlc3MgdGhhdCBhY2Nlc3Nfb2soKSB3aWxsIHJl
amVjdC4NClRoZW4gdGhlIC1FRkFVTFQgd2lsbCBnZXQgZ2VuZXJhdGVkIGluIHRoZSAnZXhwZWN0
ZWQnIHBsYWNlDQphbmQgdGhlcmUgaXMgbm8gc2NvcGUgZm9yIGZhaWxpbmcgdG8gdGVzdCBpdCdz
IHJldHVybiB2YWx1ZS4NCg0KCURhdmlkDQoNCi0NClJlZ2lzdGVyZWQgQWRkcmVzcyBMYWtlc2lk
ZSwgQnJhbWxleSBSb2FkLCBNb3VudCBGYXJtLCBNaWx0b24gS2V5bmVzLCBNSzEgMVBULCBVSw0K
UmVnaXN0cmF0aW9uIE5vOiAxMzk3Mzg2IChXYWxlcykNCg=

WARNING: multiple messages have this Message-ID (diff)
From: David Laight <David.Laight@ACULAB.COM>
To: dccp@vger.kernel.org
Subject: RE: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt
Date: Sat, 08 Aug 2020 13:54:06 +0000	[thread overview]
Message-ID: <ed3741fdf1774cfbbd59d06ecb6994d8@AcuMS.aculab.com> (raw)
In-Reply-To: <20200723060908.50081-26-hch@lst.de>

RnJvbTogRXJpYyBEdW1hemV0DQo+IFNlbnQ6IDA3IEF1Z3VzdCAyMDIwIDE5OjI5DQo+IA0KPiBP
biA4LzcvMjAgMjoxOCBBTSwgRGF2aWQgTGFpZ2h0IHdyb3RlOg0KPiA+IEZyb206IEVyaWMgRHVt
YXpldA0KPiA+PiBTZW50OiAwNiBBdWd1c3QgMjAyMCAyMzoyMQ0KPiA+Pg0KPiA+PiBPbiA3LzIy
LzIwIDExOjA5IFBNLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90ZToNCj4gPj4+IFJld29yayB0aGUg
cmVtYWluaW5nIHNldHNvY2tvcHQgY29kZSB0byBwYXNzIGEgc29ja3B0cl90IGluc3RlYWQgb2Yg
YQ0KPiA+Pj4gcGxhaW4gdXNlciBwb2ludGVyLiAgVGhpcyByZW1vdmVzIHRoZSBsYXN0IHJlbWFp
bmluZyBzZXRfZnMoS0VSTkVMX0RTKQ0KPiA+Pj4gb3V0c2lkZSBvZiBhcmNoaXRlY3R1cmUgc3Bl
Y2lmaWMgY29kZS4NCj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdp
ZyA8aGNoQGxzdC5kZT4NCj4gPj4+IEFja2VkLWJ5OiBTdGVmYW4gU2NobWlkdCA8c3RlZmFuQGRh
dGVuZnJlaWhhZmVuLm9yZz4gW2llZWU4MDIxNTRdDQo+ID4+PiAtLS0NCj4gPj4NCj4gPj4NCj4g
Pj4gLi4uDQo+ID4+DQo+ID4+PiBkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmF3LmMgYi9uZXQvaXB2
Ni9yYXcuYw0KPiA+Pj4gaW5kZXggNTk0ZTAxYWQ2NzBhYTYuLjg3NGYwMWNkN2FlYzQyIDEwMDY0
NA0KPiA+Pj4gLS0tIGEvbmV0L2lwdjYvcmF3LmMNCj4gPj4+ICsrKyBiL25ldC9pcHY2L3Jhdy5j
DQo+ID4+PiBAQCAtOTcyLDEzICs5NzIsMTMgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0
cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKQ0KPiA+Pj4gIH0N
Cj4gPj4+DQo+ID4+DQo+ID4+IC4uLg0KPiA+Pg0KPiA+Pj4gIHN0YXRpYyBpbnQgZG9fcmF3djZf
c2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsDQo+ID4+
PiAtCQkJICAgIGNoYXIgX191c2VyICpvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pDQo+ID4+
PiArCQkJICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pDQo+ID4+
PiAgew0KPiA+Pj4gIAlzdHJ1Y3QgcmF3Nl9zb2NrICpycCA9IHJhdzZfc2soc2spOw0KPiA+Pj4g
IAlpbnQgdmFsOw0KPiA+Pj4NCj4gPj4+IC0JaWYgKGdldF91c2VyKHZhbCwgKGludCBfX3VzZXIg
KilvcHR2YWwpKQ0KPiA+Pj4gKwlpZiAoY29weV9mcm9tX3NvY2twdHIoJnZhbCwgb3B0dmFsLCBz
aXplb2YodmFsKSkpDQo+ID4+PiAgCQlyZXR1cm4gLUVGQVVMVDsNCj4gPj4+DQo+ID4+DQo+ID4+
IGNvbnZlcnRpbmcgZ2V0X3VzZXIoLi4uKSAgIHRvICBjb3B5X2Zyb21fc29ja3B0ciguLi4pIHJl
YWxseSBhc3N1bWVkIHRoZSBvcHRsZW4NCj4gPj4gaGFzIGJlZW4gdmFsaWRhdGVkIHRvIGJlID49
IHNpemVvZihpbnQpIGVhcmxpZXIuDQo+ID4+DQo+ID4+IFdoaWNoIGlzIG5vdCBhbHdheXMgdGhl
IGNhc2UsIGZvciBleGFtcGxlIGhlcmUuDQo+ID4+DQo+ID4+IFVzZXIgYXBwbGljYXRpb24gY2Fu
IGZvb2wgdXMgcGFzc2luZyBvcHRsZW49MCwgYW5kIGEgdXNlciBwb2ludGVyIG9mIGV4YWN0bHkg
VEFTS19TSVpFLTENCj4gPg0KPiA+IFdvbid0IHRoZSB1c2VyIHBvaW50ZXIgZm9yY2UgY29weV9m
cm9tX3NvY2twdHIoKSB0byBjYWxsDQo+ID4gY29weV9mcm9tX3VzZXIoKSB3aGljaCB3aWxsIHRo
ZW4gZG8gYWNjZXNzX29rKCkgb24gdGhlIGVudGlyZQ0KPiA+IHJhbmdlIGFuZCBzbyByZXR1cm4g
LUVGQVVMVC4NCj4gPg0KPiA+IFRoZSBvbmx5IHByb2JsZW1zIGFyaXNlIGlmIHRoZSBrZXJuZWwg
Y29kZSBhZGRzIGFuIG9mZnNldCB0byB0aGUNCj4gPiB1c2VyIGFkZHJlc3MuDQo+ID4gQW5kIHRo
ZSBsYXRlciBwYXRjaCBhZGRlZCBhbiBvZmZzZXQgdG8gdGhlIGNvcHkgZnVuY3Rpb25zLg0KPiAN
Cj4gSSBkdW5ubywgSSBkZWZpbml0ZWx5IGdvdCB0aGUgZm9sbG93aW5nIHN5emJvdCBjcmFzaA0K
PiANCj4gTm8gcmVwcm8gZm91bmQgYnkgc3l6Ym90IHlldCwgYnV0IEkgc3VzcGVjdCBhIDMyYml0
IGJpbmFyeSBwcm9ncmFtDQo+IGRpZCA6DQo+IA0KPiBzZXRzb2Nrb3B0KGZkLCAweDI5LCAweDI0
LCAweGZmZmZmZmZmZmZmZmZmZmYsIDB4MCkNCg0KQSBmZXcgdG9vIG1hbnkgZmZzLi4uDQoNCj4g
QlVHOiBLQVNBTjogd2lsZC1tZW1vcnktYWNjZXNzIGluIG1lbWNweSBpbmNsdWRlL2xpbnV4L3N0
cmluZy5oOjQwNiBbaW5saW5lXQ0KPiBCVUc6IEtBU0FOOiB3aWxkLW1lbW9yeS1hY2Nlc3MgaW4g
Y29weV9mcm9tX3NvY2twdHJfb2Zmc2V0IGluY2x1ZGUvbGludXgvc29ja3B0ci5oOjcxIFtpbmxp
bmVdDQo+IEJVRzogS0FTQU46IHdpbGQtbWVtb3J5LWFjY2VzcyBpbiBjb3B5X2Zyb21fc29ja3B0
ciBpbmNsdWRlL2xpbnV4L3NvY2twdHIuaDo3NyBbaW5saW5lXQ0KPiBCVUc6IEtBU0FOOiB3aWxk
LW1lbW9yeS1hY2Nlc3MgaW4gZG9fcmF3djZfc2V0c29ja29wdCBuZXQvaXB2Ni9yYXcuYzoxMDIz
IFtpbmxpbmVdDQo+IEJVRzogS0FTQU46IHdpbGQtbWVtb3J5LWFjY2VzcyBpbiByYXd2Nl9zZXRz
b2Nrb3B0KzB4MWExLzB4NmYwIG5ldC9pcHY2L3Jhdy5jOjEwODQNCj4gUmVhZCBvZiBzaXplIDQg
YXQgYWRkciAwMDAwMDAwMGZmZmZmZmZmIGJ5IHRhc2sgc3l6LWV4ZWN1dG9yLjAvMjgyNTENCg0K
WWVwLCB0aGUgY29kZSBpcyBuZWFybHksIGJ1dCBub3QgcXVpdGUgcmlnaHQuDQpUaGUgcHJvYmxl
bSBpcyBhbG1vc3QgY2VydGFpbmx5IHRoYXQgYWNjZXNzX29rKHgsIDApIGFsd2F5cyByZXR1cm5z
IHN1Y2Nlc3MuDQoNCkluIGFueSBjYXNlIHRoZSBjaGVjayBmb3IgYSB2YWxpZCB1c2VyIGFkZHJl
c3Mgb3VnaHQgdG8gYmUgZXhhY3RseQ0KdGhlIHNhbWUgb25lIHRoYXQgbGF0ZXIgc2VsZWN0cyBi
ZXR3ZWVuIGNvcHlfdG8vZnJvbV91c2VyKCkgYW5kIG1lbWNweSgpLg0KDQpUaGUgbGF0dGVyIGNv
bXBhcmVzIHRoZSBhZGRyZXNzIGFnYWluc3QgJ1RBU0tfU0laRScuDQpIb3dldmVyIHRoYXQgaXNu
J3QgdGhlIHJpZ2h0IHZhbHVlIGVpdGhlciAtIEkgdGhpbmsgaXQgcmVhZHMNCnRoZSB2YWx1ZSBm
cm9tICdjdXJyZW50JyB0aGF0IHNldF9mcygpIHNldHMuDQpXaGF0IHRoaXMgY29kZSBuZWVkcyBp
cyBhbnkgYWRkcmVzcyB0aGF0IGlzIGFib3ZlIHRoZSBoaWdoZXN0DQp1c2VyIGFkZHJlc3MgYW5k
IGJlbG93IChvciBlcXVhbCB0bykgdG8gbG93ZXN0IGtlcm5lbCBvbmUuDQoNCk9uIGkzODYgKGFu
ZCBwcm9iYWJseSBtb3N0IDMyYml0IGxpbnV4KSB0aGlzIGlzIDB4YzAwMDAwMDAuDQpPbiB4ODYt
NjQgdGhpcyBjb3VsZCBiZSBhbnkgYWRkcmVzcyBpbiB0aGUgYWRkcmVzcyAnYmxhY2sgaG9sZScu
DQpQaWNraW5nIDF1bGw8PDYzIG1heSBiZSBiZXN0Lg0KUXVpdGUgd2hhdCB0aGUgY29ycmVjdCAj
ZGVmaW5lIGlzIHJlcXVpcmVzIGZ1cnRoZXIgcmVzZWFyY2guDQoNClRoZXJlIGlzIGFjdHVhbGx5
IHNjb3BlIGZvciBtYWtpbmcgaW5pdF91c2VyX3NvY2twdHIoa2Vybl9hZGRyZXNzKQ0Kc2F2ZSBh
IHZhbHVlIHRoYXQgd2lsbCBjYXVzZSBjb3B5X3RvL2Zyb21fc29ja3B0cigpIGdvIGludG8NCnRo
ZSB1c2VyLWNvcHkgcGF0aCB3aXRoIGFuIGFkZHJlc3MgdGhhdCBhY2Nlc3Nfb2soKSB3aWxsIHJl
amVjdC4NClRoZW4gdGhlIC1FRkFVTFQgd2lsbCBnZXQgZ2VuZXJhdGVkIGluIHRoZSAnZXhwZWN0
ZWQnIHBsYWNlDQphbmQgdGhlcmUgaXMgbm8gc2NvcGUgZm9yIGZhaWxpbmcgdG8gdGVzdCBpdCdz
IHJldHVybiB2YWx1ZS4NCg0KCURhdmlkDQoNCi0NClJlZ2lzdGVyZWQgQWRkcmVzcyBMYWtlc2lk
ZSwgQnJhbWxleSBSb2FkLCBNb3VudCBGYXJtLCBNaWx0b24gS2V5bmVzLCBNSzEgMVBULCBVSw0K
UmVnaXN0cmF0aW9uIE5vOiAxMzk3Mzg2IChXYWxlcykNCg=

WARNING: multiple messages have this Message-ID (diff)
From: David Laight <David.Laight@ACULAB.COM>
To: 'Eric Dumazet' <eric.dumazet@gmail.com>,
	Christoph Hellwig <hch@lst.de>,
	"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-sctp@vger.kernel.org" <linux-sctp@vger.kernel.org>,
	"linux-afs@lists.infradead.org" <linux-afs@lists.infradead.org>,
	Stefan Schmidt <stefan@datenfreihafen.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"rds-devel@oss.oracle.com" <rds-devel@oss.oracle.com>,
	"linux-x25@vger.kernel.org" <linux-x25@vger.kernel.org>,
	"dccp@vger.kernel.org" <dccp@vger.kernel.org>,
	"bridge@lists.linux-foundation.org"
	<bridge@lists.linux-foundation.org>,
	"lvs-devel@vger.kernel.org" <lvs-devel@vger.kernel.org>,
	"coreteam@netfilter.org" <coreteam@netfilter.org>,
	"mptcp@lists.01.org" <mptcp@lists.01.org>,
	"netfilter-devel@vger.kernel.org"
	<netfilter-devel@vger.kernel.org>,
	"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
	"linux-hams@vger.kernel.org" <linux-hams@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-decnet-user@lists.sourceforge.net"
	<linux-decnet-user@lists.sourceforge.net>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>,
	"tipc-discussion@lists.sourceforge.net"
	<tipc-discussion@lists.sourceforge.net>,
	"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
	"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
	"linux-wpan@vger.kernel.org" <linux-wpan@vger.kernel.org>
Subject: Re: [Bridge] [PATCH 25/26] net: pass a sockptr_t into ->setsockopt
Date: Sat, 8 Aug 2020 13:54:06 +0000	[thread overview]
Message-ID: <ed3741fdf1774cfbbd59d06ecb6994d8@AcuMS.aculab.com> (raw)
In-Reply-To: <90f626a4-d9e5-91a5-b71d-498e3b125da1@gmail.com>

From: Eric Dumazet
> Sent: 07 August 2020 19:29
> 
> On 8/7/20 2:18 AM, David Laight wrote:
> > From: Eric Dumazet
> >> Sent: 06 August 2020 23:21
> >>
> >> On 7/22/20 11:09 PM, Christoph Hellwig wrote:
> >>> Rework the remaining setsockopt code to pass a sockptr_t instead of a
> >>> plain user pointer.  This removes the last remaining set_fs(KERNEL_DS)
> >>> outside of architecture specific code.
> >>>
> >>> Signed-off-by: Christoph Hellwig <hch@lst.de>
> >>> Acked-by: Stefan Schmidt <stefan@datenfreihafen.org> [ieee802154]
> >>> ---
> >>
> >>
> >> ...
> >>
> >>> diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
> >>> index 594e01ad670aa6..874f01cd7aec42 100644
> >>> --- a/net/ipv6/raw.c
> >>> +++ b/net/ipv6/raw.c
> >>> @@ -972,13 +972,13 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
> >>>  }
> >>>
> >>
> >> ...
> >>
> >>>  static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
> >>> -			    char __user *optval, unsigned int optlen)
> >>> +			       sockptr_t optval, unsigned int optlen)
> >>>  {
> >>>  	struct raw6_sock *rp = raw6_sk(sk);
> >>>  	int val;
> >>>
> >>> -	if (get_user(val, (int __user *)optval))
> >>> +	if (copy_from_sockptr(&val, optval, sizeof(val)))
> >>>  		return -EFAULT;
> >>>
> >>
> >> converting get_user(...)   to  copy_from_sockptr(...) really assumed the optlen
> >> has been validated to be >= sizeof(int) earlier.
> >>
> >> Which is not always the case, for example here.
> >>
> >> User application can fool us passing optlen=0, and a user pointer of exactly TASK_SIZE-1
> >
> > Won't the user pointer force copy_from_sockptr() to call
> > copy_from_user() which will then do access_ok() on the entire
> > range and so return -EFAULT.
> >
> > The only problems arise if the kernel code adds an offset to the
> > user address.
> > And the later patch added an offset to the copy functions.
> 
> I dunno, I definitely got the following syzbot crash
> 
> No repro found by syzbot yet, but I suspect a 32bit binary program
> did :
> 
> setsockopt(fd, 0x29, 0x24, 0xffffffffffffffff, 0x0)

A few too many ffs...

> BUG: KASAN: wild-memory-access in memcpy include/linux/string.h:406 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr_offset include/linux/sockptr.h:71 [inline]
> BUG: KASAN: wild-memory-access in copy_from_sockptr include/linux/sockptr.h:77 [inline]
> BUG: KASAN: wild-memory-access in do_rawv6_setsockopt net/ipv6/raw.c:1023 [inline]
> BUG: KASAN: wild-memory-access in rawv6_setsockopt+0x1a1/0x6f0 net/ipv6/raw.c:1084
> Read of size 4 at addr 00000000ffffffff by task syz-executor.0/28251

Yep, the code is nearly, but not quite right.
The problem is almost certainly that access_ok(x, 0) always returns success.

In any case the check for a valid user address ought to be exactly
the same one that later selects between copy_to/from_user() and memcpy().

The latter compares the address against 'TASK_SIZE'.
However that isn't the right value either - I think it reads
the value from 'current' that set_fs() sets.
What this code needs is any address that is above the highest
user address and below (or equal to) to lowest kernel one.

On i386 (and probably most 32bit linux) this is 0xc0000000.
On x86-64 this could be any address in the address 'black hole'.
Picking 1ull<<63 may be best.
Quite what the correct #define is requires further research.

There is actually scope for making init_user_sockptr(kern_address)
save a value that will cause copy_to/from_sockptr() go into
the user-copy path with an address that access_ok() will reject.
Then the -EFAULT will get generated in the 'expected' place
and there is no scope for failing to test it's return value.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

             reply	other threads:[~2020-08-08 13:54 UTC|newest]

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