]> git.baikalelectronics.ru Git - kernel.git/commit
net: optimize the sockptr_t for unified kernel/user address spaces
authorChristoph Hellwig <hch@lst.de>
Thu, 23 Jul 2020 06:09:08 +0000 (08:09 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 24 Jul 2020 22:41:54 +0000 (15:41 -0700)
commit073369af28ce37693900f39eb6111eaada5459c3
tree90ff9c419f8244651aa420349756cc371d539646
parent5b9726645a55ec54481a963568bc9f29d3120dcb
net: optimize the sockptr_t for unified kernel/user address spaces

For architectures like x86 and arm64 we don't need the separate bit to
indicate that a pointer is a kernel pointer as the address spaces are
unified.  That way the sockptr_t can be reduced to a union of two
pointers, which leads to nicer calling conventions.

The only caveat is that we need to check that users don't pass in kernel
address and thus gain access to kernel memory.  Thus the USER_SOCKPTR
helper is replaced with a init_user_sockptr function that does this check
and returns an error if it fails.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/sockptr.h
net/ipv4/bpfilter/sockopt.c
net/socket.c