From: Christoph Hellwig <hch at lst.de> To: mptcp at lists.01.org Subject: [MPTCP] [PATCH 26/26] net: optimize the sockptr_t for unified kernel/user address spaces Date: Thu, 23 Jul 2020 08:09:08 +0200 [thread overview] Message-ID: <20200723060908.50081-27-hch@lst.de> (raw) In-Reply-To: 20200723060908.50081-1-hch@lst.de [-- Attachment #1: Type: text/plain, Size: 4036 bytes --] 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(a)lst.de> --- include/linux/sockptr.h | 32 ++++++++++++++++++++++++++++++-- net/ipv4/bpfilter/sockopt.c | 14 ++++++++------ net/socket.c | 6 +++++- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/include/linux/sockptr.h b/include/linux/sockptr.h index 700856e13ea0c4..7d5cdb2b30b5f0 100644 --- a/include/linux/sockptr.h +++ b/include/linux/sockptr.h @@ -8,9 +8,34 @@ #ifndef _LINUX_SOCKPTR_H #define _LINUX_SOCKPTR_H +#include <linux/compiler.h> #include <linux/slab.h> #include <linux/uaccess.h> +#ifdef CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE +typedef union { + void *kernel; + void __user *user; +} sockptr_t; + +static inline bool sockptr_is_kernel(sockptr_t sockptr) +{ + return (unsigned long)sockptr.kernel >= TASK_SIZE; +} + +static inline sockptr_t KERNEL_SOCKPTR(void *p) +{ + return (sockptr_t) { .kernel = p }; +} + +static inline int __must_check init_user_sockptr(sockptr_t *sp, void __user *p) +{ + if ((unsigned long)p >= TASK_SIZE) + return -EFAULT; + sp->user = p; + return 0; +} +#else /* CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE */ typedef struct { union { void *kernel; @@ -29,10 +54,13 @@ static inline sockptr_t KERNEL_SOCKPTR(void *p) return (sockptr_t) { .kernel = p, .is_kernel = true }; } -static inline sockptr_t USER_SOCKPTR(void __user *p) +static inline int __must_check init_user_sockptr(sockptr_t *sp, void __user *p) { - return (sockptr_t) { .user = p }; + sp->user = p; + sp->is_kernel = false; + return 0; } +#endif /* CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE */ static inline bool sockptr_is_null(sockptr_t sockptr) { diff --git a/net/ipv4/bpfilter/sockopt.c b/net/ipv4/bpfilter/sockopt.c index 1b34cb9a7708ec..94f18d2352d007 100644 --- a/net/ipv4/bpfilter/sockopt.c +++ b/net/ipv4/bpfilter/sockopt.c @@ -57,16 +57,18 @@ int bpfilter_ip_set_sockopt(struct sock *sk, int optname, sockptr_t optval, return bpfilter_mbox_request(sk, optname, optval, optlen, true); } -int bpfilter_ip_get_sockopt(struct sock *sk, int optname, char __user *optval, - int __user *optlen) +int bpfilter_ip_get_sockopt(struct sock *sk, int optname, + char __user *user_optval, int __user *optlen) { - int len; + sockptr_t optval; + int err, len; if (get_user(len, optlen)) return -EFAULT; - - return bpfilter_mbox_request(sk, optname, USER_SOCKPTR(optval), len, - false); + err = init_user_sockptr(&optval, user_optval); + if (err) + return err; + return bpfilter_mbox_request(sk, optname, optval, len, false); } static int __init bpfilter_sockopt_init(void) diff --git a/net/socket.c b/net/socket.c index e44b8ac47f6f46..94ca4547cd7c53 100644 --- a/net/socket.c +++ b/net/socket.c @@ -2097,7 +2097,7 @@ static bool sock_use_custom_sol_socket(const struct socket *sock) int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval, int optlen) { - sockptr_t optval = USER_SOCKPTR(user_optval); + sockptr_t optval; char *kernel_optval = NULL; int err, fput_needed; struct socket *sock; @@ -2105,6 +2105,10 @@ int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval, if (optlen < 0) return -EINVAL; + err = init_user_sockptr(&optval, user_optval); + if (err) + return err; + sock = sockfd_lookup_light(fd, &err, &fput_needed); if (!sock) return err; -- 2.27.0
WARNING: multiple messages have this Message-ID
From: Christoph Hellwig <hch@lst.de> To: "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>, Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>, Eric Dumazet <edumazet@google.com> Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org, netfilter-devel@vger.kernel.org, coreteam@netfilter.org, linux-sctp@vger.kernel.org, linux-hams@vger.kernel.org, linux-bluetooth@vger.kernel.org, bridge@lists.linux-foundation.org, linux-can@vger.kernel.org, dccp@vger.kernel.org, linux-decnet-user@lists.sourceforge.net, linux-wpan@vger.kernel.org, linux-s390@vger.kernel.org, mptcp@lists.01.org, lvs-devel@vger.kernel.org, rds-devel@oss.oracle.com, linux-afs@lists.infradead.org, tipc-discussion@lists.sourceforge.net, linux-x25@vger.kernel.org Subject: [PATCH 26/26] net: optimize the sockptr_t for unified kernel/user address spaces Date: Thu, 23 Jul 2020 08:09:08 +0200 [thread overview] Message-ID: <20200723060908.50081-27-hch@lst.de> (raw) In-Reply-To: <20200723060908.50081-1-hch@lst.de> 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> --- include/linux/sockptr.h | 32 ++++++++++++++++++++++++++++++-- net/ipv4/bpfilter/sockopt.c | 14 ++++++++------ net/socket.c | 6 +++++- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/include/linux/sockptr.h b/include/linux/sockptr.h index 700856e13ea0c4..7d5cdb2b30b5f0 100644 --- a/include/linux/sockptr.h +++ b/include/linux/sockptr.h @@ -8,9 +8,34 @@ #ifndef _LINUX_SOCKPTR_H #define _LINUX_SOCKPTR_H +#include <linux/compiler.h> #include <linux/slab.h> #include <linux/uaccess.h> +#ifdef CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE +typedef union { + void *kernel; + void __user *user; +} sockptr_t; + +static inline bool sockptr_is_kernel(sockptr_t sockptr) +{ + return (unsigned long)sockptr.kernel >= TASK_SIZE; +} + +static inline sockptr_t KERNEL_SOCKPTR(void *p) +{ + return (sockptr_t) { .kernel = p }; +} + +static inline int __must_check init_user_sockptr(sockptr_t *sp, void __user *p) +{ + if ((unsigned long)p >= TASK_SIZE) + return -EFAULT; + sp->user = p; + return 0; +} +#else /* CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE */ typedef struct { union { void *kernel; @@ -29,10 +54,13 @@ static inline sockptr_t KERNEL_SOCKPTR(void *p) return (sockptr_t) { .kernel = p, .is_kernel = true }; } -static inline sockptr_t USER_SOCKPTR(void __user *p) +static inline int __must_check init_user_sockptr(sockptr_t *sp, void __user *p) { - return (sockptr_t) { .user = p }; + sp->user = p; + sp->is_kernel = false; + return 0; } +#endif /* CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE */ static inline bool sockptr_is_null(sockptr_t sockptr) { diff --git a/net/ipv4/bpfilter/sockopt.c b/net/ipv4/bpfilter/sockopt.c index 1b34cb9a7708ec..94f18d2352d007 100644 --- a/net/ipv4/bpfilter/sockopt.c +++ b/net/ipv4/bpfilter/sockopt.c @@ -57,16 +57,18 @@ int bpfilter_ip_set_sockopt(struct sock *sk, int optname, sockptr_t optval, return bpfilter_mbox_request(sk, optname, optval, optlen, true); } -int bpfilter_ip_get_sockopt(struct sock *sk, int optname, char __user *optval, - int __user *optlen) +int bpfilter_ip_get_sockopt(struct sock *sk, int optname, + char __user *user_optval, int __user *optlen) { - int len; + sockptr_t optval; + int err, len; if (get_user(len, optlen)) return -EFAULT; - - return bpfilter_mbox_request(sk, optname, USER_SOCKPTR(optval), len, - false); + err = init_user_sockptr(&optval, user_optval); + if (err) + return err; + return bpfilter_mbox_request(sk, optname, optval, len, false); } static int __init bpfilter_sockopt_init(void) diff --git a/net/socket.c b/net/socket.c index e44b8ac47f6f46..94ca4547cd7c53 100644 --- a/net/socket.c +++ b/net/socket.c @@ -2097,7 +2097,7 @@ static bool sock_use_custom_sol_socket(const struct socket *sock) int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval, int optlen) { - sockptr_t optval = USER_SOCKPTR(user_optval); + sockptr_t optval; char *kernel_optval = NULL; int err, fput_needed; struct socket *sock; @@ -2105,6 +2105,10 @@ int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval, if (optlen < 0) return -EINVAL; + err = init_user_sockptr(&optval, user_optval); + if (err) + return err; + sock = sockfd_lookup_light(fd, &err, &fput_needed); if (!sock) return err; -- 2.27.0
WARNING: multiple messages have this Message-ID
From: Christoph Hellwig <hch@lst.de> To: "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>, Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>, Eric Dumazet <edumazet@google.com> Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org, netfilter-devel@vger.kernel.org, coreteam@netfilter.org, linux-sctp@vger.kernel.org, linux-hams@vger.kernel.org, linux-bluetooth@vger.kernel.org, bridge@lists.linux-foundation.org, linux-can@vger.kernel.org, dccp@vger.kernel.org, linux-decnet-user@lists.sourceforge.net, linux-wpan@vger.kernel.org, linux-s390@vger.kernel.org, mptcp@lists.01.org, lvs-devel@vger.kernel.org, rds-devel@oss.oracle.com, linux-afs@lists.infradead.org, tipc-discussion@lists.sourceforge.net, linux-x25@vger.kernel.org Subject: [PATCH 26/26] net: optimize the sockptr_t for unified kernel/user address spaces Date: Thu, 23 Jul 2020 06:09:08 +0000 [thread overview] Message-ID: <20200723060908.50081-27-hch@lst.de> (raw) In-Reply-To: <20200723060908.50081-1-hch@lst.de> 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> --- include/linux/sockptr.h | 32 ++++++++++++++++++++++++++++++-- net/ipv4/bpfilter/sockopt.c | 14 ++++++++------ net/socket.c | 6 +++++- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/include/linux/sockptr.h b/include/linux/sockptr.h index 700856e13ea0c4..7d5cdb2b30b5f0 100644 --- a/include/linux/sockptr.h +++ b/include/linux/sockptr.h @@ -8,9 +8,34 @@ #ifndef _LINUX_SOCKPTR_H #define _LINUX_SOCKPTR_H +#include <linux/compiler.h> #include <linux/slab.h> #include <linux/uaccess.h> +#ifdef CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE +typedef union { + void *kernel; + void __user *user; +} sockptr_t; + +static inline bool sockptr_is_kernel(sockptr_t sockptr) +{ + return (unsigned long)sockptr.kernel >= TASK_SIZE; +} + +static inline sockptr_t KERNEL_SOCKPTR(void *p) +{ + return (sockptr_t) { .kernel = p }; +} + +static inline int __must_check init_user_sockptr(sockptr_t *sp, void __user *p) +{ + if ((unsigned long)p >= TASK_SIZE) + return -EFAULT; + sp->user = p; + return 0; +} +#else /* CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE */ typedef struct { union { void *kernel; @@ -29,10 +54,13 @@ static inline sockptr_t KERNEL_SOCKPTR(void *p) return (sockptr_t) { .kernel = p, .is_kernel = true }; } -static inline sockptr_t USER_SOCKPTR(void __user *p) +static inline int __must_check init_user_sockptr(sockptr_t *sp, void __user *p) { - return (sockptr_t) { .user = p }; + sp->user = p; + sp->is_kernel = false; + return 0; } +#endif /* CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE */ static inline bool sockptr_is_null(sockptr_t sockptr) { diff --git a/net/ipv4/bpfilter/sockopt.c b/net/ipv4/bpfilter/sockopt.c index 1b34cb9a7708ec..94f18d2352d007 100644 --- a/net/ipv4/bpfilter/sockopt.c +++ b/net/ipv4/bpfilter/sockopt.c @@ -57,16 +57,18 @@ int bpfilter_ip_set_sockopt(struct sock *sk, int optname, sockptr_t optval, return bpfilter_mbox_request(sk, optname, optval, optlen, true); } -int bpfilter_ip_get_sockopt(struct sock *sk, int optname, char __user *optval, - int __user *optlen) +int bpfilter_ip_get_sockopt(struct sock *sk, int optname, + char __user *user_optval, int __user *optlen) { - int len; + sockptr_t optval; + int err, len; if (get_user(len, optlen)) return -EFAULT; - - return bpfilter_mbox_request(sk, optname, USER_SOCKPTR(optval), len, - false); + err = init_user_sockptr(&optval, user_optval); + if (err) + return err; + return bpfilter_mbox_request(sk, optname, optval, len, false); } static int __init bpfilter_sockopt_init(void) diff --git a/net/socket.c b/net/socket.c index e44b8ac47f6f46..94ca4547cd7c53 100644 --- a/net/socket.c +++ b/net/socket.c @@ -2097,7 +2097,7 @@ static bool sock_use_custom_sol_socket(const struct socket *sock) int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval, int optlen) { - sockptr_t optval = USER_SOCKPTR(user_optval); + sockptr_t optval; char *kernel_optval = NULL; int err, fput_needed; struct socket *sock; @@ -2105,6 +2105,10 @@ int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval, if (optlen < 0) return -EINVAL; + err = init_user_sockptr(&optval, user_optval); + if (err) + return err; + sock = sockfd_lookup_light(fd, &err, &fput_needed); if (!sock) return err; -- 2.27.0
next reply other threads:[~2020-07-23 6:09 UTC|newest] Thread overview: 417+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-23 6:09 Christoph Hellwig [this message] 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig -- strict thread matches above, loose matches on Subject: below -- 2020-08-08 13:54 [MPTCP] Re: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt David Laight 2020-08-08 13:54 ` David Laight 2020-08-08 13:54 ` David Laight 2020-08-08 13:54 ` David Laight 2020-08-08 13:54 ` David Laight 2020-08-07 18:29 [MPTCP] " Eric Dumazet 2020-08-07 18:29 ` Eric Dumazet 2020-08-07 18:29 ` Eric Dumazet 2020-08-07 18:29 ` Eric Dumazet 2020-08-07 18:29 ` Eric Dumazet 2020-08-07 9:18 [MPTCP] " David Laight 2020-08-07 9:18 ` David Laight 2020-08-07 9:18 ` David Laight 2020-08-07 9:18 ` David Laight 2020-08-07 9:18 ` David Laight 2020-08-07 7:21 [MPTCP] " Christoph Hellwig 2020-08-07 7:21 ` Christoph Hellwig 2020-08-07 7:21 ` Christoph Hellwig 2020-08-07 7:21 ` Christoph Hellwig 2020-08-06 22:21 [MPTCP] " Eric Dumazet 2020-08-06 22:21 ` Eric Dumazet 2020-08-06 22:21 ` Eric Dumazet 2020-07-28 8:17 [MPTCP] Re: [PATCH 12/26] netfilter: switch nf_setsockopt to sockptr_t Jason A. Donenfeld 2020-07-28 8:17 ` Jason A. Donenfeld 2020-07-28 8:17 ` Jason A. Donenfeld 2020-07-28 8:17 ` Jason A. Donenfeld 2020-07-28 8:17 ` Jason A. Donenfeld 2020-07-28 8:17 ` Jason A. Donenfeld 2020-07-28 8:07 [MPTCP] " David Laight 2020-07-28 8:07 ` David Laight 2020-07-28 8:07 ` David Laight 2020-07-28 8:07 ` David Laight 2020-07-27 18:22 [MPTCP] Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt " Ido Schimmel 2020-07-27 18:22 ` Ido Schimmel 2020-07-27 18:22 ` Ido Schimmel 2020-07-27 18:22 ` Ido Schimmel 2020-07-27 16:23 [MPTCP] Re: [PATCH 12/26] netfilter: switch nf_setsockopt " Christoph Hellwig 2020-07-27 16:23 ` Christoph Hellwig 2020-07-27 16:23 ` Christoph Hellwig 2020-07-27 16:23 ` Christoph Hellwig 2020-07-27 16:21 [MPTCP] " Jason A. Donenfeld 2020-07-27 16:21 ` Jason A. Donenfeld 2020-07-27 16:21 ` Jason A. Donenfeld 2020-07-27 16:21 ` Jason A. Donenfeld 2020-07-27 16:16 [MPTCP] " Jason A. Donenfeld 2020-07-27 16:16 ` Jason A. Donenfeld 2020-07-27 16:16 ` Jason A. Donenfeld 2020-07-27 16:16 ` Jason A. Donenfeld 2020-07-27 16:16 ` Jason A. Donenfeld 2020-07-27 16:16 [MPTCP] " Christoph Hellwig 2020-07-27 16:16 ` Christoph Hellwig 2020-07-27 16:16 ` Christoph Hellwig 2020-07-27 16:16 ` Christoph Hellwig 2020-07-27 16:15 [MPTCP] Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt " Christoph Hellwig 2020-07-27 16:15 ` Christoph Hellwig 2020-07-27 16:15 ` Christoph Hellwig 2020-07-27 16:15 ` Christoph Hellwig 2020-07-27 15:06 [MPTCP] Re: [PATCH 12/26] netfilter: switch nf_setsockopt " Christoph Hellwig 2020-07-27 15:06 ` Christoph Hellwig 2020-07-27 15:06 ` Christoph Hellwig 2020-07-27 15:06 ` Christoph Hellwig 2020-07-27 15:03 [MPTCP] " Jason A. Donenfeld 2020-07-27 15:03 ` Jason A. Donenfeld 2020-07-27 15:03 ` Jason A. Donenfeld 2020-07-27 15:03 ` Jason A. Donenfeld 2020-07-27 14:09 [MPTCP] Re: get rid of the address_space override in setsockopt v2 David Laight 2020-07-27 14:09 ` David Laight 2020-07-27 14:09 ` David Laight 2020-07-27 14:09 ` David Laight 2020-07-27 13:33 [MPTCP] Re: [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t Ido Schimmel 2020-07-27 13:33 ` Ido Schimmel 2020-07-27 13:33 ` Ido Schimmel 2020-07-27 13:33 ` Ido Schimmel 2020-07-27 13:24 [MPTCP] " David Laight 2020-07-27 13:24 ` David Laight 2020-07-27 13:24 ` David Laight 2020-07-27 13:24 ` David Laight 2020-07-27 13:00 [MPTCP] " Christoph Hellwig 2020-07-27 13:00 ` Christoph Hellwig 2020-07-27 13:00 ` Christoph Hellwig 2020-07-27 13:00 ` Christoph Hellwig 2020-07-27 12:15 [MPTCP] " Ido Schimmel 2020-07-27 12:15 ` Ido Schimmel 2020-07-27 12:15 ` Ido Schimmel 2020-07-27 12:15 ` Ido Schimmel 2020-07-26 7:46 [MPTCP] Re: get rid of the address_space override in setsockopt v2 David Miller 2020-07-26 7:46 ` David Miller 2020-07-26 7:46 ` David Miller 2020-07-23 16:44 [MPTCP] Re: [PATCH 04/26] net: add a new sockptr_t type Christoph Hellwig 2020-07-23 16:44 ` Christoph Hellwig 2020-07-23 16:44 ` Christoph Hellwig 2020-07-23 16:44 ` Christoph Hellwig 2020-07-23 16:44 ` Christoph Hellwig 2020-07-23 16:40 [MPTCP] " Eric Dumazet 2020-07-23 16:40 ` Eric Dumazet 2020-07-23 16:40 ` Eric Dumazet 2020-07-23 16:40 ` Eric Dumazet 2020-07-23 16:40 ` Eric Dumazet 2020-07-23 14:56 [MPTCP] Re: [PATCH 03/26] bpfilter: reject kernel addresses David Laight 2020-07-23 14:56 ` David Laight 2020-07-23 14:56 ` David Laight 2020-07-23 14:56 ` David Laight 2020-07-23 14:44 [MPTCP] " 'Christoph Hellwig' 2020-07-23 14:44 ` 'Christoph Hellwig' 2020-07-23 14:44 ` 'Christoph Hellwig' 2020-07-23 14:44 ` 'Christoph Hellwig' 2020-07-23 14:44 ` 'Christoph Hellwig' 2020-07-23 14:42 [MPTCP] " David Laight 2020-07-23 14:42 ` David Laight 2020-07-23 14:42 ` David Laight 2020-07-23 14:42 ` David Laight 2020-07-23 11:44 [MPTCP] Re: [PATCH 13/26] bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t 'Christoph Hellwig' 2020-07-23 11:44 ` 'Christoph Hellwig' 2020-07-23 11:44 ` 'Christoph Hellwig' 2020-07-23 11:44 ` 'Christoph Hellwig' 2020-07-23 11:44 ` 'Christoph Hellwig' 2020-07-23 11:16 [MPTCP] " David Laight 2020-07-23 11:16 ` David Laight 2020-07-23 11:16 ` David Laight 2020-07-23 11:16 ` David Laight 2020-07-23 11:14 [MPTCP] Re: [PATCH 01/26] bpfilter: fix up a sparse annotation Luc Van Oostenryck 2020-07-23 11:14 ` Luc Van Oostenryck 2020-07-23 11:14 ` Luc Van Oostenryck 2020-07-23 11:14 ` Luc Van Oostenryck 2020-07-23 8:39 [MPTCP] Re: [PATCH 25/26] net: pass a sockptr_t into ->setsockopt Matthieu Baerts 2020-07-23 8:39 ` [MPTCP] " Matthieu Baerts 2020-07-23 8:39 ` Matthieu Baerts 2020-07-23 8:39 [MPTCP] Re: [PATCH 08/26] net: switch sock_set_timeout to sockptr_t Matthieu Baerts 2020-07-23 8:39 ` [MPTCP] " Matthieu Baerts 2020-07-23 8:39 ` Matthieu Baerts 2020-07-23 6:09 [MPTCP] [PATCH 25/26] net: pass a sockptr_t into ->setsockopt Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 [MPTCP] [PATCH 24/26] net/tcp: switch do_tcp_setsockopt to sockptr_t Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 [MPTCP] [PATCH 23/26] net/tcp: switch ->md5_parse " Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 [MPTCP] [PATCH 22/26] net/udp: switch udp_lib_setsockopt " Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 [MPTCP] [PATCH 21/26] net/ipv6: switch do_ipv6_setsockopt " Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 [MPTCP] [PATCH 20/26] net/ipv6: factor out a ipv6_set_opt_hdr helper Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 [MPTCP] [PATCH 19/26] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 [MPTCP] [PATCH 18/26] net/ipv6: split up ipv6_flowlabel_opt Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:09 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 17/26] net/ipv6: switch ip6_mroute_setsockopt to sockptr_t Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 16/26] net/ipv4: switch do_ip_setsockopt " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 15/26] net/ipv4: merge ip_options_get and ip_options_get_from_user Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 14/26] net/ipv4: switch ip_mroute_setsockopt to sockptr_t Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 13/26] bpfilter: switch bpfilter_ip_set_sockopt " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 12/26] netfilter: switch nf_setsockopt " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 11/26] netfilter: switch xt_copy_counters " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 10/26] netfilter: remove the unused user argument to do_update_counters Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 09/26] net/xfrm: switch xfrm_user_policy to sockptr_t Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 08/26] net: switch sock_set_timeout " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 07/26] " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 06/26] net: switch sock_setbindtodevice " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 05/26] net: switch copy_bpf_fprog_from_user " Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 03/26] bpfilter: reject kernel addresses Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 02/26] net/bpfilter: split __bpfilter_process_sockopt Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] [PATCH 01/26] bpfilter: fix up a sparse annotation Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 [MPTCP] get rid of the address_space override in setsockopt v2 Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` [MPTCP] [PATCH 04/26] net: add a new sockptr_t type Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 6:08 ` Christoph Hellwig 2020-07-23 15:40 ` Jan Engelhardt 2020-07-23 15:40 ` Jan Engelhardt 2020-07-23 15:40 ` Jan Engelhardt 2020-07-23 15:40 ` Jan Engelhardt 2020-07-24 22:43 ` [MPTCP] Re: get rid of the address_space override in setsockopt v2 David Miller 2020-07-24 22:43 ` David Miller 2020-07-24 22:43 ` David Miller 2020-07-26 7:03 ` [MPTCP] " Christoph Hellwig 2020-07-26 7:03 ` Christoph Hellwig 2020-07-26 7:03 ` Christoph Hellwig 2020-07-26 7:08 ` Andreas Schwab 2020-07-26 7:08 ` Andreas Schwab 2020-07-27 9:51 ` [MPTCP] " David Laight 2020-07-27 9:51 ` David Laight 2020-07-27 9:51 ` David Laight 2020-07-27 9:51 ` David Laight 2020-07-27 13:48 ` Al Viro 2020-07-27 13:48 ` Al Viro 2020-07-27 13:48 ` Al Viro 2020-07-27 13:48 ` Al Viro 2020-07-22 17:09 [MPTCP] Re: get rid of the address_space override in setsockopt Alexei Starovoitov 2020-07-22 17:09 ` Alexei Starovoitov 2020-07-22 17:09 ` Alexei Starovoitov 2020-07-22 17:09 ` Alexei Starovoitov 2020-07-22 8:26 [MPTCP] Re: [PATCH 24/24] net: pass a sockptr_t into ->setsockopt Matthieu Baerts 2020-07-22 8:26 ` [MPTCP] " Matthieu Baerts 2020-07-22 8:26 ` Matthieu Baerts 2020-07-22 8:26 ` Matthieu Baerts 2020-07-22 8:21 [MPTCP] Re: get rid of the address_space override in setsockopt David Laight 2020-07-22 8:21 ` David Laight 2020-07-22 8:21 ` David Laight 2020-07-22 8:21 ` David Laight 2020-07-22 8:07 [MPTCP] " 'Christoph Hellwig' 2020-07-22 8:07 ` 'Christoph Hellwig' 2020-07-22 8:07 ` 'Christoph Hellwig' 2020-07-22 8:07 ` 'Christoph Hellwig' 2020-07-22 8:07 ` 'Christoph Hellwig' 2020-07-22 8:06 [MPTCP] " 'Christoph Hellwig' 2020-07-22 8:06 ` 'Christoph Hellwig' 2020-07-22 8:06 ` 'Christoph Hellwig' 2020-07-22 8:06 ` 'Christoph Hellwig' 2020-07-22 8:06 ` 'Christoph Hellwig' 2020-07-22 8:01 [MPTCP] Re: [PATCH 12/24] bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t 'Christoph Hellwig' 2020-07-22 8:01 ` 'Christoph Hellwig' 2020-07-22 8:01 ` 'Christoph Hellwig' 2020-07-22 8:01 ` 'Christoph Hellwig' 2020-07-22 8:01 ` 'Christoph Hellwig' 2020-07-22 8:00 [MPTCP] " 'Christoph Hellwig' 2020-07-22 8:00 ` 'Christoph Hellwig' 2020-07-22 8:00 ` 'Christoph Hellwig' 2020-07-22 8:00 ` 'Christoph Hellwig' 2020-07-22 8:00 ` 'Christoph Hellwig' 2020-07-22 7:56 [MPTCP] Re: get rid of the address_space override in setsockopt Christoph Hellwig 2020-07-22 7:56 ` Christoph Hellwig 2020-07-22 7:56 ` Christoph Hellwig 2020-07-22 7:56 ` Christoph Hellwig 2020-07-22 7:56 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Christoph Hellwig 2020-07-22 7:56 ` Christoph Hellwig 2020-07-22 7:56 ` Christoph Hellwig 2020-07-22 7:56 ` Christoph Hellwig 2020-07-21 10:26 [MPTCP] Re: get rid of the address_space override in setsockopt David Laight 2020-07-21 10:26 ` David Laight 2020-07-21 10:26 ` David Laight 2020-07-21 10:26 ` David Laight 2020-07-21 10:14 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type David Laight 2020-07-21 10:14 ` David Laight 2020-07-21 10:14 ` David Laight 2020-07-21 10:14 ` David Laight 2020-07-21 9:55 [MPTCP] " David Laight 2020-07-21 9:55 ` David Laight 2020-07-21 9:55 ` David Laight 2020-07-21 9:55 ` David Laight 2020-07-21 9:38 [MPTCP] Re: get rid of the address_space override in setsockopt David Laight 2020-07-21 9:38 ` David Laight 2020-07-21 9:38 ` David Laight 2020-07-21 9:38 ` David Laight 2020-07-21 8:36 [MPTCP] Re: [PATCH 12/24] bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t David Laight 2020-07-21 8:36 ` David Laight 2020-07-21 8:36 ` David Laight 2020-07-21 8:36 ` David Laight 2020-07-21 5:28 [MPTCP] Re: [PATCH 02/24] bpfilter: fix up a sparse annotation Al Viro 2020-07-21 5:28 ` Al Viro 2020-07-21 5:28 ` Al Viro 2020-07-21 5:28 ` Al Viro 2020-07-21 5:23 [MPTCP] " Christoph Hellwig 2020-07-21 5:23 ` Christoph Hellwig 2020-07-21 5:23 ` Christoph Hellwig 2020-07-21 5:23 ` Christoph Hellwig 2020-07-21 2:40 [MPTCP] " Luc Van Oostenryck 2020-07-21 2:40 ` Luc Van Oostenryck 2020-07-21 2:40 ` Luc Van Oostenryck 2020-07-21 2:40 ` Luc Van Oostenryck 2020-07-20 23:20 [MPTCP] Re: [PATCH 24/24] net: pass a sockptr_t into ->setsockopt David Miller 2020-07-20 23:20 ` David Miller 2020-07-20 23:20 ` David Miller 2020-07-20 23:20 ` David Miller 2020-07-20 20:47 [MPTCP] Re: get rid of the address_space override in setsockopt Alexei Starovoitov 2020-07-20 20:47 ` Alexei Starovoitov 2020-07-20 20:47 ` Alexei Starovoitov 2020-07-20 20:47 ` Alexei Starovoitov 2020-07-20 17:55 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Eric Biggers 2020-07-20 17:55 ` Eric Biggers 2020-07-20 17:55 ` Eric Biggers 2020-07-20 17:55 ` Eric Biggers 2020-07-20 17:43 [MPTCP] Re: get rid of the address_space override in setsockopt Christoph Hellwig 2020-07-20 17:43 ` Christoph Hellwig 2020-07-20 17:43 ` Christoph Hellwig 2020-07-20 17:43 ` Christoph Hellwig 2020-07-20 17:43 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Christoph Hellwig 2020-07-20 17:43 ` Christoph Hellwig 2020-07-20 17:43 ` Christoph Hellwig 2020-07-20 17:43 ` Christoph Hellwig 2020-07-20 16:38 [MPTCP] Re: get rid of the address_space override in setsockopt Eric Biggers 2020-07-20 16:38 ` Eric Biggers 2020-07-20 16:38 ` Eric Biggers 2020-07-20 16:38 ` Eric Biggers 2020-07-20 16:37 [MPTCP] Re: [PATCH 03/24] net: add a new sockptr_t type Eric Biggers 2020-07-20 16:37 ` Eric Biggers 2020-07-20 16:37 ` Eric Biggers 2020-07-20 16:37 ` Eric Biggers 2020-07-20 14:19 [MPTCP] Re: [PATCH 24/24] net: pass a sockptr_t into ->setsockopt Stefan Schmidt 2020-07-20 14:19 ` Stefan Schmidt 2020-07-20 14:19 ` Stefan Schmidt 2020-07-20 12:47 [MPTCP] " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 23/24] net/tcp: switch do_tcp_setsockopt to sockptr_t Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 22/24] net/tcp: switch ->md5_parse " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 21/24] net/udp: switch udp_lib_setsockopt " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 20/24] net/ipv6: switch do_ipv6_setsockopt " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 19/24] net/ipv6: factor out a ipv6_set_opt_hdr helper Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 18/24] net/ipv6: switch ipv6_flowlabel_opt to sockptr_t Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 17/24] net/ipv6: split up ipv6_flowlabel_opt Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 16/24] net/ipv6: switch ip6_mroute_setsockopt to sockptr_t Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 15/24] net/ipv4: switch do_ip_setsockopt " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 14/24] net/ipv4: merge ip_options_get and ip_options_get_from_user Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 13/24] net/ipv4: switch ip_mroute_setsockopt to sockptr_t Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 12/24] bpfilter: switch bpfilter_ip_set_sockopt " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 11/24] netfilter: switch nf_setsockopt " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 10/24] netfilter: switch xt_copy_counters " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 09/24] netfilter: remove the unused user argument to do_update_counters Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 08/24] net/xfrm: switch xfrm_user_policy to sockptr_t Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 07/24] net: switch sock_set_timeout " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 06/24] " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 05/24] net: switch sock_setbindtodevice " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 04/24] net: switch copy_bpf_fprog_from_user " Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 03/24] net: add a new sockptr_t type Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 02/24] bpfilter: fix up a sparse annotation Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] [PATCH 01/24] bpfilter: reject kernel addresses Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 [MPTCP] get rid of the address_space override in setsockopt Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig 2020-07-20 12:47 ` Christoph Hellwig
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200723060908.50081-27-hch@lst.de \ --to=unknown@example.com \ --subject='Re: [MPTCP] [PATCH 26/26] net: optimize the sockptr_t for unified kernel/user address spaces' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.