Re: [PATCH net-next v3 0/4] net: move .getsockopt away from __user buffers (update 1)
David Laight <[email protected]>
| Newsgroups | org.kernel.vger.io-uring,org.kernel.vger.bpf,org.kernel.vger.linux-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <20260605161424.334a05d5@pumpkin> |
On Fri, 5 Jun 2026 05:25:21 -0700 Breno Leitao <[email protected]> wrote: > On Wed, Apr 08, 2026 at 03:30:28AM -0700, Breno Leitao wrote: > > Currently, the .getsockopt callback requires __user pointers: > > > > int (*getsockopt)(struct socket *sock, int level, > > int optname, char __user *optval, int __user *optlen); > > > > This prevents kernel callers (io_uring, BPF) from using getsockopt on > > levels other than SOL_SOCKET, since they pass kernel pointers. > > > > Following Linus' suggestion [0], this series introduces sockopt_t, a > > type-safe wrapper around iov_iter, I'd have thought it would also have been better to use a wrapper function instead of direct calls to copy_from_iter(). There is no need for most of the code to know there is a iov_iter hiding inside sockopt_t. -- David > > and a getsockopt_iter callback that > > works with both user and kernel buffers. AF_PACKET and CAN raw are > > converted as initial users, with selftests covering the trickiest > > conversion patterns. > > Quick update on this effort. > > All proto_ops users have been converted to getsockopt_iter and submitted. > > Most conversions are already in linux-next. Three remain: > > 1) rds: Under review > https://lore.kernel.org/all/[email protected]/ > > 2) smc: Submitted today. This is only limited to UBUF right now > https://lore.kernel.org/all/[email protected]/ > > 3) CAN drivers: Reviewed and acked, pending Marc's merge > https://lore.kernel.org/all/[email protected]/ > > Once these are merged, I'll rename getsockopt_iter to getsockopt and > remove the legacy path. > > Next, I'll convert struct proto the same way to eliminate the remaining > userspace optlen/optval pointers. > > After that, io_uring getsockopt operations will be unblocked. >