[RFC][PATCHES] uaccess-related stuff in net/*

From: Al Viro
Date: Mon May 11 2020 - 00:43:39 EST


Assorted uaccess-related work in net/*. First, there's
getting rid of compat_alloc_user_space() mess in MCAST_...
[gs]etsockopt() - no need to play with copying to/from temporary
object on userland stack, etc., when ->compat_[sg]etsockopt()
instances in question can easly do everything without that.
That's the first 13 patches. Then there's a trivial bit in
net/batman-adv (completely unrelated to everything else) and
finally getting the atm compat ioctls into simpler shape.

Please, review and comment. Individual patches in followups,
the entire branch (on top of current net/master) is in
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git #uaccess.net

Shortlog:
Al Viro (19):
lift compat definitions of mcast [sg]etsockopt requests into net/compat.h
compat_ip{,v6}_setsockopt(): enumerate MCAST_... options explicitly
ip*_mc_gsfget(): lift copyout of struct group_filter into callers
get rid of compat_mc_getsockopt()
set_mcast_msfilter(): take the guts of setsockopt(MCAST_MSFILTER) into a helper
ipv4: do compat setsockopt for MCAST_MSFILTER directly
ip6_mc_msfilter(): pass the address list separately
ipv6: do compat setsockopt for MCAST_MSFILTER directly
ipv[46]: do compat setsockopt for MCAST_{JOIN,LEAVE}_GROUP directly
ipv4: take handling of group_source_req options into a helper
ipv6: take handling of group_source_req options into a helper
handle the group_source_req options directly
get rid of compat_mc_setsockopt()
batadv_socket_read(): get rid of pointless access_ok()
atm: separate ATM_GETNAMES handling from the rest of atm_dev_ioctl()
atm: move copyin from atm_getnames() into the caller
atm: switch do_atm_iobuf() to direct use of atm_getnames()
atm: lift copyin from atm_dev_ioctl()
atm: switch do_atmif_sioc() to direct use of atm_dev_ioctl()
Diffstat:
include/linux/igmp.h | 2 +-
include/net/compat.h | 29 +++-
include/net/ipv6.h | 5 +-
net/atm/ioctl.c | 96 +++++++------
net/atm/resources.c | 108 +++++---------
net/atm/resources.h | 5 +-
net/batman-adv/icmp_socket.c | 3 -
net/compat.c | 194 -------------------------
net/ipv4/igmp.c | 18 +--
net/ipv4/ip_sockglue.c | 329 ++++++++++++++++++++++++++++++++-----------
net/ipv6/ipv6_sockglue.c | 233 ++++++++++++++++++++++++------
net/ipv6/mcast.c | 17 +--
12 files changed, 567 insertions(+), 472 deletions(-)