[6 more piles tonight with several more left for tomorrow] DRM compat ioctl handling. Kills double-copies in there and tons of field-by-field copyin/copyout. Several dead ioctls put to rest, while we are at it - the native counterparts had been gone for a decade, so we can bloody well fail early on the compat side. No point rearranging the 32bit structure into 64bit one (and back) only to be told "piss off, I don't know that ioctl" by the native code... There's a trivial fixup patch tagged on the end of that branch; I could fold it back, but one of the affected commits is early in the queue and fixup does not affect gcc at all - it's dealing with sparse misannotations only, so it's not a bisect hazard and I decided to leave it at the branch tip. The following changes since commit 2ea659a9ef488125eb46da6eb571de5eae5c43f6: Linux 4.12-rc1 (2017-05-13 13:19:49 -0700) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git work.drm for you to fetch changes up to b87b786b1fa1aa1bba33da22c8bb6b3ec7b608d2: Fix trivial misannotations (2017-07-06 02:00:00 -0400) ---------------------------------------------------------------- Al Viro (29): new helper: drm_ioctl_kernel() drm_compat_ioctl(): prepare for conversions to drm_ioctl_kernel() switch compat_drm_addbufs() to drm_ioctl_kernel() switch compat_drm_version() to drm_ioctl_kernel() switch compat_drm_getunique() to drm_ioctl_kernel() compat_drm_setunique(): don't bother switch compat_drm_getmap() to drm_ioctl_kernel() switch compat_drm_infobufs() to drm_ioctl_kernel() switch compat_drm_getclient() to drm_ioctl_kernel() switch compat_drm_getstats() to drm_ioctl_kernel() switch compat_drm_addmap() to drm_ioctl_kernel() switch compat_drm_markbufs() to drm_ioctl_kernel() switch compat_drm_freebufs() to drm_ioctl_kernel() switch compat_drm_setsareactx() to drm_ioctl_kernel() switch compat_drm_getsareactx() to drm_ioctl_kernel() switch compat_drm_resctx() to drm_ioctl_kernel() switch compat_drm_dma() to drm_ioctl_kernel() compat_drm: switch AGP compat ioctls to drm_ioctl_kernel() compat_drm: switch sg ioctls switch compat_drm_update_draw() switch compat_drm_wait_vblank() to drm_ioctl_kernel() switch compat_drm_mode_addfb2() to drm_ioctl_kernel() switch compat_drm_rmmap() to drm_ioctl_kernel() switch compat_drm_mapbufs() to drm_ioctl_kernel() drm_compat_ioctl(): tidy up a bit drm compat: ia64 is not biarch radeon: take out dead compat ioctls mga: switch compat ioctls to drm_ioctl_kernel() Fix trivial misannotations drivers/gpu/drm/drm_bufs.c | 116 +++--- drivers/gpu/drm/drm_internal.h | 3 + drivers/gpu/drm/drm_ioc32.c | 750 +++++++++++++--------------------- drivers/gpu/drm/drm_ioctl.c | 48 ++- drivers/gpu/drm/drm_legacy.h | 7 + drivers/gpu/drm/mga/mga_drv.h | 2 + drivers/gpu/drm/mga/mga_ioc32.c | 149 +++---- drivers/gpu/drm/mga/mga_state.c | 2 +- drivers/gpu/drm/radeon/Makefile | 1 - drivers/gpu/drm/radeon/radeon_drv.c | 18 +- drivers/gpu/drm/radeon/radeon_ioc32.c | 424 ------------------- include/drm/drm_ioctl.h | 1 + 12 files changed, 476 insertions(+), 1045 deletions(-) delete mode 100644 drivers/gpu/drm/radeon/radeon_ioc32.c