Consolidating sys_wait* and compat counterparts. Gets rid of set_fs()/double-copy mess, simplifies the whole thing (lifting the copyouts to the syscalls means less headache in the part that does actual work - fewer failure exits, to start with), gets rid of the overhead of field-by-field __put_user(). The following changes since commit a8c39544a6eb2093c04afd5005b6192bd0e880c6: osf_wait4(): fix infoleak (2017-05-21 13:10:07 -0400) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git work.sys_wait for you to fetch changes up to 92ebce5ac55dba258c608248dddf59eca3f7f514: osf_wait4: switch to kernel_wait4() (2017-05-21 13:16:26 -0400) ---------------------------------------------------------------- Al Viro (9): move compat wait4 and waitid next to native variants wait4(2)/waitid(2): separate copying rusage to userland kernel_wait4()/kernel_waitid(): delay copying status to userland waitid(2): leave copyout of siginfo to syscall itself lift getrusage() from wait_noreap_copyout() kill wait_noreap_copyout() wait_task_zombie: consolidate info logics waitid(): switch copyout of siginfo to unsafe_put_user() osf_wait4: switch to kernel_wait4() arch/alpha/kernel/osf_sys.c | 53 ++------ include/linux/resource.h | 2 +- include/linux/sched/task.h | 2 + kernel/compat.c | 66 ---------- kernel/exit.c | 307 +++++++++++++++++++++++--------------------- kernel/sys.c | 16 +-- 6 files changed, 187 insertions(+), 259 deletions(-)