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