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

From: Al Viro <[email-masked]>
Date: Mon, 11 May 2020 05:43:28 +0100

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(-)